繁体   English   中英

使用 {} 和 () 进行结构初始化

[英]Struct initialization with {} and ()

当我有一个结构

   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 开始,您可以使用括号初始化程序执行聚合初始化。

 T object (arg1, arg2, ...); (5) (since C++20)

C++20之前, Point p(10,10,10); 应该调用Point的构造函数,采用 3 int s,但Point没有这样的构造函数。 正如您所展示的,您必须使用花括号初始化程序来执行聚合初始化,或者为Point提供这样的构造函数,那么您可以同时使用括号和花括号初始化程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM