C++ Primer Chapter 7-4

来源:互联网 发布:中兴通讯讲师 知乎 编辑:程序博客网 时间:2024/05/23 21:17
1:委托构造函数:就是把初始化列表改成了以函数调用,形式上看是这样的,实质是通过这种方法来实现把初始化任务委托给某个构造函数(不是本身)

2:当委托构造函数调用时,先执行被委托的构造函数的初始化列表和函数体,然后再执行委托者的函数体

3:类类型隐式转换一个实参的构造函数定了隐式的实参类型向本类类型转换规则。类似于类型隐式转换,在需要的地方自动执行(如果有该种转换规则存在)。

4:类型自动隐式转换只能执行一步。见 page264

5:explicit   有时候我们并不希望隐式转换发生,这样也许会对程序的查错造成巨大干扰,我们不知道哪里用了隐式转换,这时我们可以用explicit 关键字在只有一个参数的构造函数前,这样便可以阻值这类情况。注意explicit只用在类内部的构造函数声明处重复出现类外部构造函数定义处。

6:使用了explicit的构造函数 ,只能用于直接初始化,而不能用于赋值初始化  page265

7: explicit 定义的构造函数是可以进行强制类型转换的。与基本类型的强制类型转换方法一致   A(a);

8:聚合类    page 266;

9:字面值常量类:数据成员都是字面值类型的聚合类是字面值常量类 具体见page 267.

10: 类中的静态成员 :和所有对象无关,是一个与类相关的成员,可以 public ,private 等等。静态成员是被所有的类对象共用的。

11静态成员函数;该类函数中没有隐式的 this 指针

12:static声明静态成员时,static只能出现内部,
非 constexpr 的 static 成员只能定义外部(只能在外部初始化,内部不可初始化,并且定义类似成员函数的类外定义,先类型,再作用域,再变量。

13:constexpr 的 static 成员如果类内出现初始化值,则外部定义不能再有初始值指定,但是外部定义语句必不可少外部的定义才是真正的定义,但是不可以有指定值。(只可以内部初始化,外部不可初始化

14:静态成员可以是不完全类型
0 0