当C++ 11初始化变量时,{}和=不同

drb*_*mbe 3 c++ c++11 clion

我使用CLion作为IDE,它在IDE中报告错误

必须初始化字段z

它可以编译和运行.但是,如果我更改const int z{3};const int z=3;,则IDE中不会报告任何错误.我的问题是它是否确实是我的代码错误或它只是IDE中的错误?这两种初始化方法有何不同?您的IDE是否报告此错误?

#include <iostream>
using namespace std;

class Test
{
private:
    const int x = 3;
    int y;
    const int z{3};
public:
    Test(int);
    int gety(){
        return y;
    }
};

Test::Test(int a){
    y=x+4;
}

int main()
{
    Test test(5);
    std::cout << test.gety() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 6

是否确实是我的代码错误

代码中没有错误,没关系.

或者它只是IDE中的一个错误?

在生成错误消息的任何内容中都存在错误.IDE在我的嫌疑人列表中占据重要地位,但它可能是另一个工具,它的消息是IDE中继.

这两种初始化方法有何不同?

在此上下文中(默认成员初始化程序),两种语法在语义上都是等效的.没有区别.