一、前言
其实本人学习C++的目的,只是为了体会OOP设计思想,并为利用System Verilog验证复杂设计做准备。如果想要真正做点软件方面项目级的东西,还需要掌握其他高级语言和库、框架等知识。因此该系列博文仅注重语言基础和设计思想。上一篇该系列博文讲述了C++中基本的类封装,这次利用运算符重载友元函数来体会下C++的灵活性。
二、运算符重载友元函数
本文同样以《C++ Primer Plus》中的一个简单示例来讲解此内容。场景如下:时间粗劣地分为时和分两部分。需要完成两个时间的相加、时间与倍数的相乘(这个操作不太恰当,凑活看吧)以及显示时间操作。先上代码:
类声明:
1 #ifndef MYTIME_H_ 2 #define MYTIME_H_ 3 4 using std::ostream; 5 6 class Time 7 { 8 private: 9 int hours; 10 int minutes; 11 public: 12 Time(); 13 Time(int h,int m=0); 14 void Reset(int h = 0,int m = 0); 15 Time operator+(const Time& t) const; 16 Time operator*(double mult) const;//成员函数 17 18 friend Time operator*(double m,const Time& t) //友元函数(inline) 19 {return t * m;} 20 friend ostream& operator<<(ostream & os,const Time& t);//<<左侧必须是ostream对象 返回ostream& 21 }; 22 #endif