C++ primer(十一)-运算符重载、友元函数、变换、重载<<运算符
C++ primer(十一)--运算符重载、友元函数、转换、重载<<运算符
一、运算符重载
在上一文章中介绍了C++是如何使用户能够定义多个名称相同但特征表(参数列表)不同的函数的。这被称为函数重载或函数多态,旨在能够用同名的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。
operator+()重载+运算符,operator*()重载*运算符。
二、一个例子说明
mytime.h #ifndef MYTIME_H_ #define MYTIME_H_ class Time { private: int hours; int minutes; public: Time(); Time(int h,int n=0); void Addmin(int m); void Addhr(int n); void Reset(int h=0,int m=0); Time Sum(const Time & t)const; void Show()const; Time operator+(const Time & T)const; }; #endif
#include <iostream> #include "mytime.h" Time::Time() { hours=minutes=0; } Time::Time(int h,int n) { hours=h; minutes=n; } void Time::Addmin(int m) { minutes+=m; hours+=minutes/60; minutes%=60; } void Time::Addhr(int n) { hours+=n; } void Time::Reset(int h,int m) { hours=h; minutes=m; } Time Time::Sum(const Time & t)const { Time sum; sum.minutes=minutes+t.minutes; sum.hours=hours+t.hours+sum.minutes/60; sum.minutes%=60; return sum; } void Time::Show()const { std::cout<<hours<<"hours,"<<minutes<<" minutes"; } Time Time::operator+(const Time & t)const { Time sum; sum.minutes=minutes+t.minutes; sum.hours=hours+t.hours+sum.minutes/60; sum.minutes%=60; return sum; }
#include <iostream> #include "mytime.h" using namespace std; int main() { Time plan; Time coding(2,40); Time fixing(5,55); Time total; cout <<"plan time ="; plan.Show(); cout<<endl; }
#include <iostream> #include "mytime.h" using namespace std; int main() { Time plan; Time coding(2,40); Time fixing(5,55); Time total; total=coding+fixing; cout <<"total time ="; total.Show(); cout<<endl; }上面是一个简单的例子,对于+重载