首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不能在c++中使用类中的静态成员?

为什么不能在c++中使用类中的静态成员?
EN

Stack Overflow用户
提问于 2022-07-19 07:14:33
回答 1查看 66关注 0票数 -1
代码语言:javascript
运行
复制
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++禁止在类中初始化非const静态成员'test::count'.

为什么我不能在类中初始化静态成员?

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 07:18:08

错误很明显,您不能在声明变量时初始化它们。

相反,将它们声明为普通(没有初始化),然后记住在类之外添加它们的定义,并使用实际的初始化:

代码语言:javascript
运行
复制
class test{
    private:
    int a,b;
    public:
    static int count;
    test(int a=10,int b=10){
        count++;
    }
};
int test::count=0;

从C++17标准中添加了静态成员变量的内联定义和初始化:

代码语言:javascript
运行
复制
class test{
    private:
    int a,b;
    public:
    inline static int count=0;  // Note the inline keyword
    test(int a=10,int b=10){
        count++;
    }
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73032610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档