读书人

static 数据成员是否必须在类定义体外

发布时间: 2012-04-08 14:38:30 作者: rapoo

static 数据成员是否必须在类定义体外定义?
刚刚把一个普通数据成员改成了static的,结果马上就无法通过编译。折腾了好久都不行,直到最后在类定义体外重新写了这个数据成员的定义才算解决问题。

原本没有定义成static时对这个数据成员的定义是在类定义体内的,编译运行都没问题。

跑回去翻了翻《C++ Primer》,书上也没提到过这个问题。

[解决办法]
static变量在类里面写只被视为声明
[解决办法]
标准要求的!
[解决办法]
static数据成员,必须在类外定义,不能在类中定义的,而且非const 静态数据成员不能在类中初始化,
比如:
class a{
static int v;
};

int a::v = 9;
还有const static数据成员可以在类中赋一个整数的初始值,也可以不赋初始值,但还必须在类外定义
比如:
class b
{
static const int v = 9;
};
int b::v;

读书人网 >C++

热点推荐