为什么静态成员必须在类外初始化
2013-08-07 23:10
218 查看
为什么静态成员不能在类内初始化
在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。class A { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外初始化,不必再加static关键字
为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。
什么东西能在类内初始化
能在类中初始化的成员只有一种,那就是静态常量成员。这样不行
class A { private: static int count = 0; // 静态成员不能在类内初始化 };
这样也不行
class A { private: const int count = 0; // 常量成员也不能在类内初始化 };
但是这样可以
class A { private: static const int count = 0; // 静态常量成员可以在类内初始化 };
相关文章推荐
- 为什么静态成员必须在类外初始化
- 为什么静态成员必须在类外初始化
- 【c++】为什么类中静态(static)成员不能在类的定义内初始化?
- 为什么静态成员不能在类内初始化
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- 为什么static成员必须在类外初始化,而不能在类的头文件中初始化
- 静态成员必须类外初始化
- 为什么static成员必须在类外初始化
- 静态函数 静态数据成员与静态成员函数 为什么虚函数必须是非静态成员函数 构造函数能为static吗?
- 为什么static成员必须在类外初始化
- C++ 之静态成员 初始化必须在定义外
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- 为什么static成员必须在类外初始化
- 为什么static数据成员必须在类外初始化
- 为什么static成员必须在类外初始化
- 为什么static成员必须在类外初始化
- static成员必须在类外初始化
- 为什么静态内部累不能有静态成员?
- C++类静态成员的初始化