【发布时间】:2010-11-04 15:09:23
【问题描述】:
我知道您通常会在 .cpp 文件中初始化静态成员变量。但我的问题是:你为什么有?
这是一个例子:
#include <vector>
using namespace std;
class A {
public:
static vector<int> x;
};
main() {
int sz = A::x.size();
}
这会导致编译器错误:undefined reference to 'A::x'
但是,这:
#include <vector>
using namespace std;
class A {
public:
static vector<int> x;
};
// Initialize static member
vector<int> A::x;
main() {
int sz = A::x.size();
}
编译并运行良好。
我可以理解我是否使用默认构造函数以外的东西来初始化向量,但我不是。我只想创建一个大小为 0 的向量。当然,任何静态成员都必须在程序初始化时分配内存,那么为什么编译器不直接使用默认构造函数呢?
【问题讨论】:
标签: c++ static static-members