首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化列表中的C++静态数据成员初始化

初始化列表中的C++静态数据成员初始化
EN

Stack Overflow用户
提问于 2013-04-10 13:34:03
回答 2查看 2.2K关注 0票数 0

为什么静态数据成员不能在构造函数的初始化列表中初始化,而可以在构造函数的定义中初始化?

EN

回答 2

Stack Overflow用户

发布于 2013-04-10 14:42:14

静态成员在类范围内,即它们是类变量,而不是实例variable.We通过构造函数初始化实例。因为静态变量不是针对实例的,而是针对整个类的,所以静态变量不是由构造函数初始化的。谢谢

票数 0
EN

Stack Overflow用户

发布于 2013-04-24 18:44:47

让我们更具体地尝试一下

代码语言:javascript
复制
#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时,它用于初始化对象的实例变量。谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15917732

复制
相关文章

相似问题

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