为什么在C++中这是无效的?为什么静态成员必须在main()之外初始化?
class CLS
{
public:
static int X;
};
int _tmain(int argc, _TCHAR* argv[])
{
CLS::X=100;
return 0;
}
为什么在C++中这是无效的?为什么静态成员必须在main()之外初始化?
class CLS
{
public:
static int X;
};
int _tmain(int argc, _TCHAR* argv[])
{
CLS::X=100;
return 0;
}
一旦定义了一个静态数据成员,它的存在,即使不存在静态数据成员的类的对象。在你的例子中,即使已经定义了静态数据成员CLS :: X,也不存在类X的对象。
似乎这不回答我的问题... – yoyo 2010-12-22 05:44:46
static
成员不是类对象的一部分,但它们仍然是类作用域的一部分。它们必须在类的外部独立初始化,就像使用类作用域解析运算符定义成员函数一样。
int CLS::X=100;
他们可以在里面你的例子来改变主一样,但你必须在全球范围内为他们明确地分配存储空间,喜欢这里:
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;
}
+1。这是真正的问题。在原始示例中,您从未实际分配静态成员的存储空间。 – 2010-12-22 06:14:50
这不是静态成员必须在全局范围内初始化,而是静态成员必须为其分配存储空间。
class CLS {
public:
static int X;
};
int CLS::X;
int _tmain(int argc, _TCHAR* argv[])
{
CLS::X=100;
return 0;
}
什么是c + _ +?你是否经常将unde_rscore插入到w_ords中,因为没有reas_on? – jalf 2010-12-22 08:55:09