我需要禁用复制赋值运算符。这将起作用:
A& operator=(const A&);
如果我不为 operator=
指定确切的参数,它会工作吗?
我的意思是这样的:
void operator=(void);
返回值是对的,我可以随便写,但是参数类型呢?
这会覆盖类的默认 operator=
吗?
最佳答案
来自 12.8p17 C++标准草案:
A user-declared copy assignment operator
X::operator=
is a non-static non-template member function of classX
with exactly one parameter of typeX
,X&
,const X&
,volatile X&
orconst volatile X&
.
我想这比任何其他测试或示例代码的回复都要好。
请注意,类似的事情也适用于移动赋值运算符,请参阅 12.8p19 :
A user-declared move assignment operator X::operator= is a non-static non-template member function of class X with exactly one parameter of type X&&, const X&&, volatile X&&, or const volatile X&&.
这些也证实了,正如您所猜测的,返回值类型并不重要。
关于c++ - 当我只想禁用它时,自定义赋值 operator=() 的签名是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37507671/