为什么类的赋值运算符的返回类型通常是非const(而不是const)引用?

时间:2017-07-14 16:24:48

标签: c++

考虑这个示例代码;

class X
{
    private:
    int i;
    public:
    const X & operator = (int i_) { i = i_; return(*this); }
    const X & operator = (const X &x) { i = x.i; return(*this); }
};

X foo() { X x, y; return(x = y = 5); }

如果赋值运算符返回X&而不是const X& ?

1 个答案:

答案 0 :(得分:-1)

返回良好的类型应始终为X&。推理是 - 假设你有两个X a,b,你有一个功能 void getdata()。

您可以拨打(a + b).getdata()。但如果返回类型为const X&,则无法实现。现在假设getdata()const。然后你仍然可以调用(a + b).getdata。      因此,使用X&代替const X&可以让您自由地调用const和非const两个函数。