【发布时间】:2021-09-03 19:21:31
【问题描述】:
当我有一个结构时
struct Point
{
int x;
int y;
int z;
}
为什么可以写作
Point p = {10, 20, 30};
Point p0 {10, 20, 30};
auto p1 = Point{10, 20, 30};
使用 {}。但我不能用 () 写
Point p(10,10,10);
auto p1 = Point(10,10,10);
有错误
Error C2440 'initializing': cannot convert from 'initializer list' to 'Point '
【问题讨论】:
-
(...) 是函数调用的语法工具。在这种情况下,它是对构造函数的调用,但您还没有定义构造函数! C++20 改变了这一点,并将使其编译(以更复杂和令人困惑的 IMO 规则为代价)。
标签: c++ class oop c++11 initialization