为什么静态数据成员不能在构造函数的初始化列表中初始化,而可以在构造函数的定义中初始化?
发布于 2013-04-10 14:42:14
静态成员在类范围内,即它们是类变量,而不是实例variable.We通过构造函数初始化实例。因为静态变量不是针对实例的,而是针对整个类的,所以静态变量不是由构造函数初始化的。谢谢
发布于 2013-04-24 18:44:47
让我们更具体地尝试一下
#include <iostream>
using namespace std;
class classWithStaticVariable
{
static int aStaticVariable;
int aNormalInstanceVariable;
public:
classWithStaticVariable(int aParameter)
{
aNormalInstanceVariable=aParameter;
aStaticVariable=aNormalInstanceVariable;/////It is possible to assign value to static data member in constructor but not possible to init it.
}
void aTestFunctionJustToPrint()
{
cout<<aStaticVariable<<aNormalInstanceVariable;
}
};
int classWithStaticVariable::aStaticVariable=1;
int main()
{
classWithStaticVariable t(2);
t.aTestFunctionJustToPrint();
}静态变量是类变量,而不是实例变量。因此这些静态变量必须使用类定义进行初始化。同样,当构造函数为created.Thats all时,它用于初始化对象的实例变量。谢谢
https://stackoverflow.com/questions/15917732
复制相似问题