在编程时会遇到这样的需求:统计某个类被实现了多少次?
可以通过在类中声明一个静态成员变量来实现:
class A
{
private:
static int num_A;
public:
A();
}
对于这样的一个静态成员变量,如何保证其在类多次创建的过程中只会初始化一次?
错误的操作:
1.在放置类的头文件中对其初始化,当该头文件被多个程序include时,num_A会被多次初始化,且将引发错误。
2.在构造函数中对其初始化,当该类被实现时,num_A会被迫多次初始化。
正确的做法:
在类定义文件中对其初始化,需要用作用域运算符指明其所属的类:
int A::num_A = 0;
一种例外的情况:
如果目的是创建一个静态常量,则也可以在类声明中初始化:
class A
{
private:
const static int num_A = 10;
public:
A();
}
关于其他的各种变量初始化方式,参考:C++ —— 类中static和const关键字声明变量的初始化方式总结 - 小小小小肖 - 博客园