我想知道下面的复制构造函数有什么问题吗?

class A
{
   private:
      int m;
   public:
      A(A a){m=a.m}
}

最佳答案

两件事情:

  • 复制构造函数必须将引用作为参数,否则它们是无限递归的(实际上语言不允许你声明这样的构造函数)
  • 它不会做任何默认复制 ctor 不做的事情,但它做得很糟糕 - 您应该尽可能在复制 ctor 中使用初始化列表。如果默认复制 ctor 满足您的要求,请不要试图自己编写版本 - 您可能只会弄错,并且需要维护它。
  • 关于c++ - 这是一个有效的 Copy Ctor 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2426566/

    10-13 05:27