0、常量对象,以及常量对象的引用或指针只能调用常量成员函数
1、如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内
2、IO类属于不能被拷贝的类型,读取或写入的操作会改变流的内容,所以IO类以普通引用做参数
3、拷贝构造函数的调用:初始化变量、以值的方式传参、返回一个对象
4、使用struct关键字,则定义在第一个访问说明符之前的成员是public的;使用class关键字则为private
5、最好在类定义开始或结束前的位置集中声明友元
6、友元的声明仅仅指定了访问的权限,而非一个通常意义上的函数声明
7、一个const成员函数可以改变一个mutable成员的值
8、const成员函数如果以引用的形式返回*this,那么它的返回类型将是常量引用,非常量对象和常量对象都可以调用常量成员函数,如果是常量对象在调用,那只能返回常量引用
9、可以通过参数的底层const来重载函数。void test(char *p); void test(const char *p);
10、可以通过成员函数是否为const来重载函数,因为常量对象只能调用const成员函数
11、前向(前置)声明的作用:可以定义指向这种类型的指针或引用
12、一旦一个类的名字出现后,它就被认为是声明过了,因此类允许包含指向它自身类型的指针或引用
13、成员函数定义在类的外部时,返回类型中使用的名字都位于类的作用域之外
14、如果类的成员使用了外层作用域中的某种自定义类型,则类不能在之后重新定义该名字
15、类的const成员或引用成员,必须通过构造函数初始值列表初始化
16、成员变量的初始化顺序与他们在类定义中的出现顺序一致
17、如果一个构造函数为所有参数都提供了默认实参,则它实际上也定义了默认构造函数
18、只允许一步类类型转换
19、关键字explicit只对一个类类型实参的构造函数有效
20、聚合类(struct):所有成员都为public,没有构造函数,没有类内初始值、没有基类
21、类的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据
22、静态成员函数不与任何对象绑定在一起,他们不包含this指针
23、虽然静态成员不属于类的某个对象,但类的对象、指针或者引用都可以访问静态成员
24、静态成员可以是不完全类型。class A {static A a;}
25、静态成员可以作为成员函数的默认实参