11.2
11.2 计算时间:一个运算符重载示例
添加加法运算符
Time operator +(const Time & t) const;
Time Time::operator +(const Time & t) const
{
Time sum;
sum.minutes = t.minutes + this->minutes;
sum.hours = t.hours + this->hours + sum.minutes / 60;
sum.minutes %= 60;
return sum;
}
调用运算符重载函数
函数表示法、运算符表示法
coding.operator+(fixing);
coding + fixing;
运算符的左侧的对象是调用对象
连续使用运算符需要运算符重载函数返回一个对象
重载限制
1.重载后的操作符至少有一个操作数是用户定义的类型, 防止用户为标准类型重载运算符。
例如:不能为两个double重载+运算符。
2.使用运算符时不能违反原来的句法规则。
例如:不能将%重载成使用一个操作数。
同样, 不能修改优先级。
3.不能创建新运算符。
4.不能重载下面的运算符:P387
sizeof . .* :: ?: const_cast dynamic_cast reinterpret_cast static_cast
5.表中大多数运算符都可以通过成员或非成员函数重载, 但是下面的运算符只能通过成员函数重载
= () [] ->
附录E对没有介绍的运算符进行了总结
注意:
不要随意重载运算符。