考虑这个示例代码;
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& ?
答案 0 :(得分:-1)
返回良好的类型应始终为X&
。推理是 - 假设你有两个X a,b,你有一个功能
void getdata()。
您可以拨打(a + b).getdata()。但如果返回类型为const X&
,则无法实现。现在假设getdata()
是const
。然后你仍然可以调用(a + b).getdata。
因此,使用X&
代替const X&
可以让您自由地调用const
和非const两个函数。