C++ Primer Plus 第十二章笔记

1.      调用复制构造函数:

当函数按值传递对象或函数返回对象时,都将使用复制构造函数。

2.      如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据,而不是指针,称为深度赋值。复制的另一种形式只是复制指针值,仅浅浅地复制指针信息,称为浅复制。

3.      将已有的对象赋给另一个对象时,将使用重载的赋值运算符;初始化对象时,并不一定会使用赋值运算符。

4.      赋值运算符是只能由类成员函数重载的运算符之一。

5.      将成员函数声明为静态的,函数声明必须包括关键字static而定义不用。不能通过对象调用静态成员函数,也不能使用this指针。如果静态成员函数是在公有部分声明的,可以使用类名和作用域解析运算符来调用它。静态成员函数不与特定的对象相关联,只能使用静态数据成员。

6.      定义一个复制构造函数和一个赋值运算符(以String类为例):

C++ Primer Plus 第十二章笔记_第1张图片
C++ Primer Plus 第十二章笔记_第2张图片

7.      返回对象将调用复制构造函数而返回引用不会。

8.      重载<<运算符:

C++ Primer Plus 第十二章笔记_第3张图片

9.      单个值转换为类类型的类构造函数及类转换为其他类型的类成员函数:

声明时使用关键字explicit可防止被用于隐式转换。

10.  对于const数据成员,必须在执行到构造函数体之前,即创建对象之前进行初始化,可运用成员初始化列表完成。成员初始化列表由逗号分隔的初始化列表组成(前面带冒号)。只有构造函数可以使用这种初始化列表语法。对于const类成员和被声明为引用的类成员,必须使用这种语法。

注意:数据成员被初始化的顺序与它们出现在类声明中的顺序初始化,与初始化器中的排列顺序无关。

11.  成员初始化列表使用的括号方式也可用于常规初始化。

12.  定义伪私有方法避免了本来将自动生成的默认方法定义,且方法不能被广泛使用。

你可能感兴趣的:(C++ Primer Plus 第十二章笔记)