类的6个默认成员函数:
1、 构造函数
不是开空间创建对象,而是初始化对象
名字与类名相同,创建类类型对象由编译器自调用,在对象的生命周期只调用一次。
无返回值
可以重载
2、析构函数
对象在销毁时会自动调用析构函数, 完成类的一些资源清理工作。
析构函数在类名前加字符~
无参无返回值
一个类只有一个析构函数
对象生命周期结束时,系统自动调用析构函数
3、 拷贝构造函数
只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。
是构造函数的一个重载形式
参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用。
4、赋值运算符重载:
运算符重载:
函数名:
关键字operator后面接需要重载的运算符符号。
函数原型:
返回值类型operator操作符(参数列表)
作为类成员的重载函数,其形参看起来比操作数少1,成员函数的操作符有一个默认的形参this,限定为第一个形参。
不能重载的运算符:.*、::、sizeof、?:、.
赋值运算符重载:
参数类型、返回值、检测是否自己给自己赋值、返回*this
5、const成员
const修饰的类成员函数称之为const成员函数,const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
6、指针和引用的区别
引用必须被初始化(引用类型的初始值必须是一个对象),指针不必(但最好要初始化)。
引用初始化以后不能被改变,指针可以改变所指的对象。
不存在指向空值的引用,但是存在指向空值的指针。
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
指针是一个对象,可以定义指向指针的指针。但引用不是对象,没有实际地址,所以不能定义指向引用的指针,也不能定义指向引用的引用。