为什么类构造函数在通过复制进行对象初始化时不起作用?

Vit*_*one -1 c++ c++11

当我用另一个对象的副本初始化它时,为什么类对象的构造函数不起作用?

class Human
{
   int No;
   public:
       Human(int arg):No(arg)
       {
        cout<<"constructor Works"<<endl;
       }
};
int main()
{
    Human a{10}; // constructor Works for object a
    Human b{a};  //why b object's constructor dont work?
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*rey 8

您需要一个复制构造函数,否则编译器将生成一个(不输出任何内容).加:

Human(const Human& h):No(h.No) { std::cout << "copy-ctor" << std::endl; }
Run Code Online (Sandbox Code Playgroud)

  • 现在正在等待传入"我有一个复制构造,但看起来编译器没有调用它,这是一个错误吗?" (3认同)