4

我知道你不能在不使用构造函数的情况下直接初始化类中的成员变量(静态常量除外)。

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

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

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();
}
4

2 回答 2

5

其实你可以。但仅在 C++11 中。

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

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

你的编译器可能不支持这个,但 GCC 4.8.0编译得很好

希望有帮助。

于 2013-04-01T18:41:15.683 回答
1

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

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

于 2013-04-01T18:40:50.810 回答