c++ - 使用 struct Initializer 为公共(public)成员变量赋值不会产生编译器错误?

标签 c++ variable-assignment list-initialization

在以下 C++ 代码中,为什么与赋值运算符一起使用的结构初始值设定项不会生成编译器错误?

这是编译器错误吗?

它适用于所有编译器吗?

这实际上是哪种作业?

class vector2D
{
    public :
        double x,y;
};

int main()
{
    vector2D v1;
    v1 = {1,2} ; // why does this compile and work?
}

最佳答案

Is it a compiler bug ?

没有。

Will it work on every compiler ?

它将在所有 C++11(或更高版本)兼容的编译器上编译。

Which kind of assignment is it actually ?

它是来自通过列表初始化创建的临时对象的赋值。

关于c++ - 使用 struct Initializer 为公共(public)成员变量赋值不会产生编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014059/

相关文章:

C++ 不需要 5/9 并且似乎对它进行了类型转换

C数组声明和赋值?

c++ - GCC 不支持 new 表达式中的大括号省略

javascript - 为什么在 JavaScript 中分配 Infinity 不会引发错误,但不起作用?

C++ 多值初始化

c++ - 用大括号初始化标量

c++ - Brace-init-list 和赋值

c++ - 三角形 - 二维正方形相交测试

c++ - 快速大数平方计算

c++ - MCS锁实现的问题