小编Max*_*x O的帖子

为什么C++列表初始化也会考虑常规构造函数?

在C++中,当使用initializer_list语法初始化对象时,当没有其他列表初始化规则适用时,对象的常规构造函数也参与重载解析.据我所知,以下代码调用X :: X(int)

class X { int a_; X(int a):a_(a) {} );

void foo() {
   X bar{3};
}
Run Code Online (Sandbox Code Playgroud)

但我不明白,为什么常规构造函数也被考虑在initializer_lists的上下文中.我觉得很多程序员现在编写X {3}来调用构造函数而不是X(3)来调用construcor.我根本不喜欢这种风格,因为它让我觉得这个对象没有常规的构造函数.

initializer_list语法也可用于调用常规构造函数的原因是什么?是否有理由比常规构造函数调用更喜欢这种语法?

c++ standards uniform-initialization

5
推荐指数
1
解决办法
250
查看次数

标签 统计

c++ ×1

standards ×1

uniform-initialization ×1