1、static声明的静态成员被当作该类类型的全局变量。对于非静态成员,每个类对象都有自己的复制品,而静态成员对每个类的类型只有一个复制品。静态成员只有一份,由该类类型的所有对象共享访问。
2、与全局对象相比,使用静态数据成员有什么优势:
静态数据成员没有进入程序的全局名字空间,因此不存在程序中其他全局名字冲突的可能性。
使用静态数据成员可以隐藏信息。因为静态成员可以是private成员,而全局对象不能。
3、const和reference类型成员变量,它们只能被初始化而不能做赋值操作,因此只有初始化列表。
4、当类中含const、reference成员变量和基类的构造函数时都需要初始化列表。
5、静态成员变量不能在类内部被初始化,放在类外部进行初始化,初始化时 指明类名 类::变量
6、静态成员函数和静态成员变量一样,不属于类的对象,因此不含this指针,也就无法调用类的非静态成员。
7、C++中空类默认会产生哪些类成员函数:
默认构造函数和复制构造函数。它们被用于类的对象的构造过程。
析构函数。它被用于类的对象的析构过程。
赋值函数。它被用于同类的对象间赋值过程。
取值运算。当对类的对象进行取地址(&)时,此函数被调用。
8、构造函数可以被重载,因为构造函数可以有多个,且带参数。无返回值
析构函数不可以被重载。因为析构函数只能有一个,且不能带参数。
9、构造函数调用构造函数只是在栈上生成了一个临时对象,对于自己本身毫无影响。还可以发现,构造函数的互相调用引起的后果不是死循环,而是栈溢出。
10、普通构造函数能够被隐式调用,而explicit修饰的构造函数只能被显示调用。