pep*_*ero 5 c++ overloading assignment-operator c++11
在c ++ 11中,我们可以使用delete禁用复制构造函数和赋值运算符:
class A {
A(const A&) = delete;
A& operator=(const A&) = delete;
}
Run Code Online (Sandbox Code Playgroud)
有一天,我的同事使用void返回类型而不是引用。
class A {
A(const A&) = delete;
void operator=(const A&) = delete;
}
Run Code Online (Sandbox Code Playgroud)
这个还可以吗?
例如,如果我有
A a, b, c;
a = b = c;
Run Code Online (Sandbox Code Playgroud)
这会工作吗?
返回类型不是 C++ 中函数签名的一部分(这也是不能仅通过返回类型重载函数的原因)。所以没关系,因为在名称查找过程中仍然会找到您删除的函数。不过,您可能会收到编译器警告,具体取决于您的编译器版本/设置。