C++ std::构造函数中的初始值设定项\u列表转换
我是C++11新手,我想知道这段代码在内部是如何工作的:C++ std::构造函数中的初始值设定项\u列表转换,c++,c++11,initializer-list,C++,C++11,Initializer List,我是C++11新手,我想知道这段代码在内部是如何工作的: class MyClass { public: MyClass(int a, double b) { cout << "ctor()" << endl; } }; int main() { MyClass i1{4, 7}; return 0; } class-MyClass { 公众: MyClass(整数a,双b){ cout我
class MyClass
{
public:
MyClass(int a, double b) {
cout << "ctor()" << endl;
}
};
int main()
{
MyClass i1{4, 7};
return 0;
}
class-MyClass
{
公众:
MyClass(整数a,双b){
cout我想这就是它发生的方式。摘自:
如果前一阶段未生成匹配项,则T的所有构造函数都会参与针对由大括号init列表元素组成的参数集的重载解析,但限制条件是只允许非收缩转换。如果此阶段生成显式构造函数作为副本列表initia的最佳匹配项编译失败(注意,在简单副本初始化中,根本不考虑显式构造函数)
语法{..}
可以构造一个std::initializer\u list
…或者它可以做其他事情。@immibis我能读到关于这方面的参考资料吗?也许可以参考“有效的现代C++”的第6项@hovo你可以找到关于initializer的详细信息。