【发布时间】:2017-06-20 16:05:26
【问题描述】:
在 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;
这行得通吗?
【问题讨论】:
-
不明白为什么。函数重载由参数类型而不是返回类型选择。
-
如果“工作”的意思是“让编译器拒绝编译,因为你正在使用已删除的函数”,那么是的。
-
是的。编译器会根据参数类型/签名而不是返回类型删除函数吗?换句话说,编译器会删除“WHATEVER operator=(const A&)”?
标签: c++ c++11 overloading assignment-operator