一、前言

  其实本人学习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
mytime.h

相关文章: