在c++ 11中,我们可以使用delete禁用复制构造函数和赋值运算符:

class A {
  A(const A&) = delete;
  A& operator=(const A&) = delete;
}

有一天,我的同事使用void返回类型而不是引用。
class A {
  A(const A&) = delete;
  void operator=(const A&) = delete;
}

这个还可以吗?

例如,如果我有
A a, b, c;
a = b = c;

这会工作吗?

最佳答案

返回类型不是c++中函数签名的一部分(这也是为什么不能仅通过返回类型重载函数的原因)。这样就可以了,因为在名称查找期间仍会找到您删除的函数。但是,您可能会有编译器警告,具体取决于您的编译器版本/设置。

关于c++ - 返回c++ 11中已删除函数的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42021631/

10-13 08:26
查看更多