<分区>
#include "stdafx.h"
#include <iostream>
class X {
public:
static int n;
};
int X::n; // out-of-class initialization
int _tmain(int argc, _TCHAR* argv[])
{
X x;
std::cout << x.n << std::endl;
return 0;
}
如果没有类外初始化,将会出现 Unresolved external 链接器错误。
但这是什么原因呢?类声明将其指定为静态成员,我什至没有分配值 n:
int X::n;
当我打印它时,n 的值为 0。所以它是默认初始化的。
如果是这样,那么需要什么以及为什么编译器不能仅从类声明进行默认初始化?编译器明明可以看到类X有一个static int成员n,为什么要定义在类外呢?
谢谢。