C++学习笔记 2014-9-25
2014-09-25 16:20 想打架的蜜蜂 阅读(166) 评论(0) 收藏 举报1、操作符==可用于测试一个简单类型的两个值是否相等,但是预定义操作符不能自动应用于对象,注意是自动并非就不能用。
2、取值函数,是用于访问私有成员变量值的成员函数,最好为每一个类定义都包括一套完整的取值函数,这样才能测试对象的相等性。取值函数不需要按字面返回每个成员变量的值,但必须返回与那些值等价的某种东西。
3、赋值函数,是允许你更改私有成员变量值的成员函数。最好为每个类定义都包括相应的赋值函数,以便更改存储在一个对象中的数据。
4、一个私有的成员函数,只能在这个类的其他成员函数中调用。直接使用成员函数的名称不需要添加任何调用对象或者圆点操作符。
5、类使用中的一些特征:
类同时具有成员变量或者成员函数,并且可为私有或者公有,通常一个类的所有成员变量都标记为私有成员,一个类的私有成员只能在同一个类的另一个成员函数的定义中使用,类的成员函数的名称可像普通函数名称那样进行重载,在一个类中可将另一个类作为自己的成员变量的类型来使用,函数的形参可具有类类型,函数可返回一个对象,换言之,类可以是一个函数返回值的类型。
6、如果所有成员变量都是公共的,而且没有成员函数,通常使用结构体,在C++中,结构体也可以包含私有成员变量和公共或者私有成员函数。除了在表示法上有一些区别,c++结构可以做一个类能做的任何事情,但是请你忘记这一细节,将结构与类区分开使用,否则就是同一个概念两个不同的名称。
7、用于初始化的构造函数:
对象申明时,需要为他初始化部分或者全部成员变量,“初始化成员变量”是最常见的一种初始化操作,定义一个类时,可定义特殊种类的成员函数,称为构造函数,构造函数将在申明那个类的对象时被调用,构造函数用于初始化成员变量的值,并进行其他可能需要的任何初始化操作。注意:
构造函数必须和类同名
构造函数定义不能返回一个值,在函数申明的起始处或者函数头中,不允许指定返回类型(甚至是void)。如:
class BankAccount
{
public:
BankAccount(int doll,double rate);
}
注意:构造函数名称BankAccount,构造函数的申明不以void或者其他任何类型名称开头,构造函数放置在类定义的public部分。如果将所有构造函数设为私有,就无法申明那个类类型的任何对象,这就使类没有任何用处。所有申明对象时的语法为:
BankAccount account(10,50,2.0)
跟上面一样,构造函数定义时,格式为:类名::函数名,如上面实现构造函数时是如下方式:
BankAccount::BankAccount()
{
///
}
无参构造函数:
BankAccount::BankAccount():doll(0),rate(0.0)
{
//主体有意留空
}
冒号后面是含有其部分或者全部成员变量的列表。等价于:
BankAccount::BankAccount()
{
doll=0;
rate=0.0;
}
任何时候只要申明类类型的一个对象,就会调用一个构造函数,但对象申明之后,还可以再次调用构造函数,这样一来,就可以方便的设置一个对象的所有成员,调用构造函数会创建一个具有新值的匿名对象,所谓匿名对象,是指一个尚未由任何变量命名的对象,可将匿名对象赋给已命名的对象(也就是赋给类变量)。
c++并非总是为你定义的类生成一个默认的构造函数,如果没有提供构造函数,编译器会生成一个什么都不做的默认的构造函数。申明该类的对象时,会调用这个构造函数。相反,如果你为类提供了一个构造函数定义,c++就不会生成构造函数,所以这时候申明对象时,调用没有对象的构造函数是不正确的。也就是说,如果你自申明一个对象时没有指定任何参数就会默认调用,但是如果你已经申明其他的构造函数,想要调用这个无参的构造函数时就得手动加上这个默认的构造函数。如果调用无参数的构造函数时不需要加上圆括号。直接就是:BankAccount account;但是如果显式调用无参构造函数时却要加上圆括号,如:account=BankAccount();
数据类型是由值得集合以及为那些值定义的一系列基本运算构成,如果使用一个数据类型的程序员不能访问值和运算的实现细节,这个数据类型称为抽象数据类型,如int。