可能是重复问题:
为什么赋值运算符必须返回引用/常量引用?
C++中的操作符=重载
我已经问过一个关于这个赋值运算符重载的问题。我可能在问一个愚蠢的问题。请原谅。
我的类声明如下:
class Circle
{
public:
Circle();
Circle(const Circle &);
Circle(unsigned short rad);
unsigned short getRadius() const { return itsradius; }
void setRadius(unsigned short rad) { itsRadius = rad; }
private:
unsigned short itsRadius:
};
我的类定义:
Circle::Circle()
{
itsRadius = 0;
}
Circle::Circle(unsigned short rad)
{
itsRadius = rad;
}
Circle::Circle(const Circle & rhs)
{
itsRadius = rhs.getRadius();
}
我正在这样重载赋值运算符:
SimpleCircle & SimpleCircle::operator=(const SimpleCircle & rhs)
{
itsRadius = rhs.getRadius();
return *this;
}
当我们在像“itsRadius = rhs.getRadius()”这样的当前对象上工作时,当前对象的半径将会被更改,那么,返回“*this”的必要性是什么?这个函数能够重写为void吗?它有任何问题吗?还是只是需要遵循标准?