相关疑难解决方法(0)

调用C++ Copy构造函数而不是initializer_list <>

基于此代码

struct Foo 
{
   Foo() 
   {
       cout << "default ctor" << endl;
   }

   Foo(std::initializer_list<Foo> ilist) 
   {
       cout << "initializer list" << endl;
   }

   Foo(const Foo& copy)
   {
       cout << "copy ctor" << endl;
   }
};

int main()
{

   Foo a;
   Foo b(a); 

   // This calls the copy constructor again! 
   //Shouldn't this call the initializer_list constructor?
   Foo c{b}; 



   _getch();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

默认ctor

复制ctor

复制ctor

在第三种情况下,我将b放入大括号初始化,它应该调用initializer_list <>构造函数.

相反,复制构造函数起带头作用.

你们有人会告诉我这是如何运作的,为什么?

c++ copy-constructor initializer-list list-initialization

18
推荐指数
2
解决办法
723
查看次数