为什么static成员必须在类外初始化

简介:

为什么静态成员不能在类内初始化

在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; // 静态常量成员可以在类内初始化
};

本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/archive/2010/07/07/1772733.html,如需转载请自行联系原作者

相关文章
|
2月前
|
C++
【c++】static成员
【c++】static成员
【c++】static成员
|
2月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
28 4
|
3月前
|
C语言
C11中类成员变量定义时初始化问题
C11中类成员变量定义时初始化问题
28 0
|
4月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
34 1
关于static修饰的成员方法成员成员变量的相关讨论
关于static修饰的成员方法成员成员变量的相关讨论
|
9月前
static成员与代码块
static成员与代码块
|
10月前
|
C++
【C++】static成员
【C++】static成员
59 0
|
11月前
|
C++
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
107 0
|
C++
C++——初始化列表 | explicit关键字 | static成员(上)
C++——初始化列表 | explicit关键字 | static成员(上)
55 0
|
编译器 C++
C++——初始化列表 | explicit关键字 | static成员(下)
C++——初始化列表 | explicit关键字 | static成员(下)
56 0