[英]Why must the static member be initialized outside main()?
为什么这在C ++中无效?
class CLS
{
public:
static int X;
};
int _tmain(int argc, _TCHAR* argv[])
{
CLS::X=100;
return 0;
}
它们可以在main中更改,就像在您的示例中一样,但您必须在全局范围内明确地为它们分配存储,如下所示:
class CLS
{
public:
static int X;
};
int CLS::X = 100; // alocating storage, usually done in CLS.cpp file.
int main(int argc, char* argv[])
{
CLS::X=100;
return 0;
}
并不是静态成员必须在全局范围内是INITIALIZED,而是静态成员必须为其分配存储。
class CLS {
public:
static int X;
};
int CLS::X;
int _tmain(int argc, _TCHAR* argv[])
{
CLS::X=100;
return 0;
}
一旦定义了静态数据成员,即使没有静态数据成员类的对象,它也存在。 在您的示例中,即使已定义静态数据成员CLS :: X,也不存在类X的对象。
static
成员不是类对象的一部分,但它们仍然是类范围的一部分。 它们必须在类之外独立初始化,就像使用类作用域解析运算符定义成员函数一样。
int CLS::X=100;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.