using namespace std;
class test{
private:
int a,b;
public:
static int count=0;
test(int a=10,int b=10){
count++;
}
};
int main(){
test t;
cout<<t.count<<endl;
test t1;
cout<<t1.count<<endl;
}
我已经使用了静态成员,它在类内部初始化,我已经在类外部尝试过,它工作得很好,但我不知道如何在初始化类内部成员时首先出现错误。
当我运行上面的代码时,它给了我以下错误:ISO c++禁止类内初始化非常量静态成员'test::count'。
为什么不能在类中初始化静态成员?
这个错误很明显,你不能在声明变量时初始化它们。
而不是像普通的那样声明它们(没有初始化),然后记住在类之外添加它们的定义,使用实际的初始化:
class test{
private:
int a,b;
public:
static int count;
test(int a=10,int b=10){
count++;
}
};
int test::count=0;
从c++ 17标准中增加了内联定义和初始化静态成员变量:
class test{
private:
int a,b;
public:
inline static int count=0; // Note the inline keyword
test(int a=10,int b=10){
count++;
}
};