【发布时间】:2017-03-21 13:43:22
【问题描述】:
我问的是不是
Type t{...};
和
Type t({...});
和
Type t = {...};
是等价的吗?如果一个有效,另一个也应该得到相同的结果?
如果没有 explicit 修饰符,它们是否等效?
【问题讨论】:
-
这真的取决于
...以及可用的构造函数。 -
不,这三个都不一样。 Here's the example 第一个编译,而其他两个没有。
-
和 here's an example 第二个编译,但不是第一个或第三个
-
@Someprogrammerdude 该示例旨在证明这三种形式实际上并不等同。对于该术语的某些定义,没有要求该示例“有意义”。话虽如此,在大括号初始化的世界中,
explicit确实适用于采用多个参数的构造函数。
标签: c++ c++11 initialization c++14