Classname(const Classname&)的使用C++中的构造函数oveloading?[复制]

Use of Classname(const Classname&); constructor oveloading in C++? [duplicate]

提问人:Rahul Naik 提问时间:4/11/2018 更新时间:4/11/2018 访问量:630

问:

我不知道它叫什么,所以我将展示代码......也许与构造函数重载有关:

class Classname{
public:
      Classname(Class1& pClass1,Class2& pClass2);
private:
      Classname(const Classname&);
      void operator=(const Classname&);
};

私人部分的 2 个语句有什么作用?

C++ 运算符 常量 复制构 造函数重载

评论

1赞 HolyBlackCat 4/11/2018
这就是“复制构造函数”和“复制赋值运算符”。

答:

1赞 rak007 4/11/2018 #1

将“复制构造函数”和“复制赋值运算符”放在私有状态只是禁止使用它们的一种方式,因为它们在此类之外使用时会引发错误。

如果你真的想禁止使用它们,我建议这样做:

class Classname
{
public:
      Classname(Class1& pClass1,Class2& pClass2);
      Classname(const Classname&) = delete;
      void operator=(const Classname&) = delete;
private:
      ...
};