1、类的静态成员存在于任何类的对象之外,对象中不包含任何与静态数据成员有关的数据。类的静态数据成员被所有的类的对象共享,所以它不包含任何this指针,也就不能将其成员函数声明为const。
2、类中的成员函数可以直接使用成员函数访问静态成员,但是在类外的对象、引用或指针需要通过作用域运算符指出其具体属于哪个类。
3、静态成员函数的static关键字只能出现在声明语句里。静态成员不是在类的对象创建时定义的,因此不是通过类的构造函数初始化。
4、不能在类中初始化静态成员,只能在类的外部定义并初始化每个静态成员,同时一个静态对象只能定义一次。
5、若想确保静态数据成员对象只定义一次,将该对象的定义与其他非内联函数放在一个文件里。
6、若想静态成员能在类内进行初始化,则静态成员需要使用const整型(常量表达式)进行初始化,并且静态成员本身是字面值常量类型的常量表达式。
7、若静态成员仅限于编译器可以修改它的值的情况下,一个const或constexpr static不需要分别定义,若静态成员的值不能替换的情况下,那么该成员必须有一条定义语句。
8、即使一个常量静态数据成员在类内部被初始化了,通常情况下需要在类外部定义一下该成员。
9、静态成员和普通成员的区别:1)静态成员独立于任何对象,与类本身相关联,而普通成员与类的对象相关联。2)静态成员可以作为默认实参,非静态成员不能作为默认实参,它本身是对象的一部分。
10、静态数据成员可以是不完全类型,指针或引用成员也可以是不完全类型,但是普通成员必须是完全类型。
11、静态成员的优点:作用域为与类的范围之内,避免与其他类的成员或者全局作用域的名字冲突;可以是私有成员,而全局对象不可以;通过阅读程序可以非常容易地看出静态成员与特定类关联,使得程序的含义清晰明了。