1、构造函数不能声明为const。
2、与其他函数不同的是,构造函数也可以包含一个构造函数初始化列表。
3、构造函数初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。
4、内置或复合类型的成员的初始值依赖于对象的作用域:在局部作用域中这些成员不被初始化,而在全局作用域中它们被初始化为0。
5、有些成员必须在构造函数初始化列表中进行初始化,对于这样的成员,在构造函数函数体中对它们赋值不起作用。没有默认构造函数的类类型的成员,以及const或引用类型的成员,不管是那种类型,都必须在构造函数初始化列表中进行初始化。
6、按照与成员声明一致的次序编写构造函数初始化列表是个好主意。此外,尽可能避免使用成员来初始化其他成员。
7、只有当一个类没有定义构造函数是,编译器才会自动生成一个默认构造函数。
8、每个构造函数应该为每个内置或复合类型的成员提供初始化式。没有初始化内置或复合类型成员的构造函数,将使那些成员处于未定义的状态。
9、使用默认构造函数定义一个对象的正确方式是去掉最后的空括号,否则就是函数声明了。
10、可以通过将构造函数声明为explicit,来防止在需要隐式转换的上下文中使用构造函数,explicit关键字只能用于类内部的构造函数声明上。在类的定义体外部所做的定义上不再重复它。
11、通常,除非有明显的理由想要定义隐式转换,否则,单形参构造函数应该为explicit。将构造函数设置为explicit可以避免错误,并且当转换有用时,用户可以显示地构造对象。
12、友元机制允许一个类将对其非公有成员的访问权限授予指定的 函数或类。友元的声明以关键字friend开始。它只能出现在类定义的内部。
13、友元可以是普通的非成员函数,或前面定义的其他类的成员函数,或整个类。将一个类设为友元,友元类的所有成员函数都可以访问授予友元关系的那个类的非公有成员。将成员声明为友元时,友元函数名必须用该函数所属的类名字加以限定。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。