构造函数 [C++ Primer]
1.构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。
2.构造函数的名字和类的名字相同,但是不能指定返回类型。
3.构造函数可以进行重载,只要每个构造函数的形参表是唯一的。
4.只要创建一个类类型的对象,编译器就会自动运行一个构造函数。
5.构造函数不可以是const(const在函数的后面,表示不能修改成员变量
但构造函数一般或者总是要修改成员变量的)。
6.构造函数的初始化式只能在构造函数的定义而不是在声明中指定。
7.构造函数分为两个阶段进行:1.初始化阶段 2.普通的计算阶段
不管是否在构造函数初始化列表显示初始化,类类型的数据成员总是在初始化阶段初始化,初始化阶段发生在计算阶段开始之前。
在构造函数的初始化列表中没有显示提及的每个成员,使用与初始化变量相同的规则进行初始化。运行该类型的默认构造函数初始化类类型的数据成员;内置或者复合类型的成员 的初始值依赖于对象的作用域,在局部作用域中这些成员不被初始化,而在全局作用域中,它们被初始化为0;
8.没有构造函数的类类型的成员以及const或引用类型的成员,无论是那种类型,必须在构造函数的初始化列表进行初始化,在构造函数体中初始化不起作用。
9.因为内置类型的成员不进行隐士初始化,所以无论在初始化列表还是赋值都是等效的。
10.初始化列表的顺序最好是成员被定义的顺序。
11.构造函数的默认实参必须是在函数的声明中指定,静态数据成员可以作为默认实参。
12.只有在该类没有定义构造函数的时候,编译器才会自动生成一个默认的构函数(通常如果定义了其他函数,则提供一个默认的构造函数总是对的)。
13.合成的默认构造函数的初始化和变量初始化相同的规则来初始化成员。