为什么你不能在c ++中初始化类中的变量

时间:2013-04-01 18:37:48

标签: c++

我知道你不能直接在类中初始化成员变量(除了static const)而不使用构造函数。

但只是想知道这背后的原因是什么。 下面是代码段

如果有任何机构可以提供帮助

class a 
{

    int c=5;

// giving error error C2864: 'a::c' : only static const integral data members can be 

// initialized within a class

    int b;


public:
    a():c(1),b(2){}

    void h()
    {
        printf("%d,%d",c,b);
    }
};

int main()
{

    a l;

    l.h();

    getchar();
}

2 个答案:

答案 0 :(得分:4)

其实你可以。但仅限于C ++ 11。

以下是有效的C ++ 11代码:

class A
{
    int x = 100; //valid in c++11
};

您的编译器可能不支持此功能,但GCC 4.8.0 compiles it fine

希望有所帮助。

答案 1 :(得分:1)

类定义主要是为了告诉其他类你的类将具有什么接口以及它占用多少内存,以及与编译时已知的类相关的任何值(即常量)。类定义中没有可执行代码(尽管在类的定义中定义的函数中可能存在可执行代码)。将执行的代码位于函数本身的定义中。

编辑:显然这在C ++ 11中受支持。