关于静态成员、静态函数及其赋值
A 关于静态成员变量
1 静态成员变量是属于类的一部分,而不是专属于属于某个对象的。所以程序就可以在还没有任何对象的时侯就可以处理此种成员变量,但是前提是你必须首先定义它。
2 不要把static 成员变量的初始化放在构造函数中,因为构造函数可能一再被调用,而变量的初始值却只应该设定一次 ;
也不要吧static 成员变量的初始化放在头文件中,因为头文件可能会载入许多地方,因此也会引起多次初始化一个变量的问题
3 你应该在应用程序文件中,类定义以外的任何地方设定其初始值 。例如 main 之中,或全局函数中, 或任何函数之外。
4 在类定义中声明static 数据成员,但在类之外初始化static 对象的时 不可有static 关键字
5 在设定static 成员变量初始值时,不考虑其存取权限。
6 当然,也可使用对象或对象指针来引用static 成员变量,但是这容易给人造成错觉, 叫人误以为该变量是专属于该对象的
B关于静态成员函数
1 只要Acess Level 允许,任何函数(包括全局函数或成员函数,static 或 non-static )都可以存取static 变量,但是如果你希望在main 函数外,就存取class 的static 变量成员,则必须设计一个static 成员函数。
2 由于static 不需要借助任何对象就可以被调用执行,所以编译器不会为它暗自增加一个this 指针,也因为如此,static 成员函数无法处理类之中的的 non-static 成员变量。