赋值运算符
赋值运算符只能重载成成员函数
函数原型:
X & X::operator=(const X &source)
{
if (this == &source)
return * this; //如果是自我复制,直接返回本身
// 赋值过程
}
- 返回引用是为了避免拷贝构造拖慢程序;
- 第一个判断是为自我复制时节约时间。
下标运算符
- 下标运算符必须重载成成员函数;
- 下标运算符是二元运算符,第一个运算数是数组名,第二个运算数是下标值。因此作为成员函数只有一个参数,即下标。
函数调用运算符
- 函数调用运算符
( )
是一个二元运算符。它的第一个运算对象是函数名,第二个参数是形式参数表。运算的结果是函数的返回值。 - 一个类重载了函数调用运算符,就可以把这个类的对象当做函数来使用
- 函数调用运算符必须重载成成员函数
- 函数调用运算符重载函数的原型为
函数的返回值 operator() (形式参数表);
++、--的重载
- 成员函数重载
++ob重载为:ob.operator++()
ob--重载为:ob.operator--(int)
- 友元函数重载
++ob重载为:operator++(X &ob)
ob--重载为:operator--(X &ob, int)
- 调用时,参数int一般传递值0。
输入输出运算符重载
输出运算符(<<
)重载原型
ostream & operator<<(ostream & os, const ClassType &obj)
{ os << 要输出的内容;
//只进行最小限度格式化,由用户控制输出细节,不应输出换行符
return os;
}
输入运算符重载的原型
istream & operator>>(istream & is, ClassType &obj)
{ is >> 要输入的内容;
return is;
}