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

him*_*s15 4 c++

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

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

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

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();
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 5

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

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

class A
{
    int x = 100; //valid in c++11
};
Run Code Online (Sandbox Code Playgroud)

您的编译器可能不支持这一点,但 GCC 4.8.0编译得很好

希望有帮助。