据我所知,当重载operator =时,返回值应该是非const引用.
A& A::operator=( const A& )
{
// check for self-assignment, do assignment
return *this;
}
Run Code Online (Sandbox Code Playgroud)
在以下情况下允许调用非const成员函数是非const的:
( a = b ).f();
Run Code Online (Sandbox Code Playgroud)
但为什么要返回参考?如果返回值未被声明为引用,它会在什么情况下产生问题,让我们说按值返回?
假设正确实现了复制构造函数.
复制赋值运算符具有通常的签名:
my_class & operator = (my_class const & rhs);
Run Code Online (Sandbox Code Playgroud)
以下签名是否有实际用途?
my_class const & operator = (my_class const & rhs);
Run Code Online (Sandbox Code Playgroud)
您只能定义一个或另一个,但不能同时定义两者.