相关疑难解决方法(0)

在C++中重载赋值运算符

据我所知,当重载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)

但为什么要返回参考?如果返回值未被声明为引用,它会在什么情况下产生问题,让我们说按值返回?

假设正确实现了复制构造函数.

c++ operator-overloading assignment-operator

16
推荐指数
2
解决办法
7145
查看次数

有没有人发现需要声明复制赋值运算符const的返回参数?

复制赋值运算符具有通常的签名:

    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)

您只能定义一个或另一个,但不能同时定义两者.

c++ assignment-operator

11
推荐指数
3
解决办法
2404
查看次数