不同的betwee {}和=当C 11初始化变量

Different betwee {} and = when C++11 initialize variables

本文关键字:初始化 变量 betwee      更新时间:2023-10-16

我将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;
}

这是否确实是我的代码的错误

代码中没有错误,还可以。

或只是IDE中的错误?

这是生成错误消息的任何错误。IDE在我的嫌疑人列表中很高,但它可能是另一个信息IDE继电器的信息。

这两种初始化方法之间有任何区别吗?

在此上下文中(默认成员初始化器)两个语法在语义上都是等效的。没有区别。