分配
赋值运算符 (=) 是,严格地说,二元运算符。其声明与其他二元运算符相同,但有以下例外:
它必须是非静态成员函数。operator= 不能声明为非成员函数。
它不受派生类继承。
,如果不存在任何继承,默认 operator= 函数可由类类型的编译器生成。(有关默认的更多信息 operator= 函数,请参见 成员分配和初始化。)
下面的示例演示如何声明赋值运算符:
// assignment.cpp
class Point
{
public:
Point &operator=( Point & ); // Right side is the argument.
int _x, _y;
};
// Define assignment operator.
Point &Point::operator=( Point &ptRHS )
{
_x = ptRHS._x;
_y = ptRHS._y;
return *this; // Assignment operator returns left side.
}
int main()
{
}
请注意所提供的参数是该表达式的右侧。运算符返回对象保留赋值运算符的行为,返回左侧的值,该分配完成后。这允许编写语句例如:
pt1 = pt2 = pt3;