c++入门之运算符重载
c++函數重載:可以將一個函數名用于不同功能的函數。從而處理不同的對象。對于運算符,同樣也有這樣的用途,即對同一個標志符的運算符,可以運用到不同的功能中去。
首先引入:運算符重載,在C語言中甚至都有運算符重載的例子:比如*可以表示指針,也可以表示為乘法。用在不同的環境下,發揮的用途是不同的。
在類中,可以將運算符重載成高級形式,比如將兩個類進行相加:
類聲明:
1 # ifndef MYTIME0_H_ 2 # define MYTIME0_H_ 3 4 class Time 5 { 6 private: 7 int hours; 8 int minutes; 9 public: 10 Time(); 11 Time(int h, int m = 0); 12 void AddMin(int m); 13 void AddHr(int h); 14 void Reset(int h = 0, int m = 0); 15 Time operator+(const Time &t) const; 16 void Show() const; 17 18 }; 19 # endif類接口函數定義:
1 # include "iostream" 2 # include "mytime0.h" 3 4 Time::Time() 5 { 6 hours = minutes = 0; 7 } 8 9 Time::Time(int h, int m) 10 { 11 hours = h; 12 minutes = m; 13 } 14 15 void Time::AddMin(int m) 16 { 17 minutes += m; 18 hours = minutes / 60; 19 minutes = minutes % 60; 20 } 21 22 void Time::AddHr(int h) 23 { 24 hours = hours + h; 25 } 26 27 void Time::Reset(int h, int m) 28 { 29 hours = h; 30 minutes = m; 31 } 32 33 Time Time::operator+(const Time &t)const 34 { 35 Time sum; 36 sum.minutes = minutes + t.minutes; 37 sum.hours = hours + t.hours + sum.minutes / 60; 38 sum.minutes = sum.minutes % 60; 39 return sum; 40 } 41 42 void Time::Show()const 43 { 44 using std::cout; 45 using std::endl; 46 std::cout << hours << "hours," << minutes << "minutes" << endl; 47 }類調用:
1 # include "iostream" 2 # include"mytime0.h" 3 4 int main() 5 { 6 using std::cout; 7 using std::endl; 8 Time planning; 9 Time coding(2, 40); 10 Time fixing(5, 55); 11 Time total; 12 13 cout << "planninf time ="; 14 planning.Show(); 15 cout << endl; 16 17 cout << "coding time ="; 18 coding.Show(); 19 cout << endl; 20 21 cout << "fixing time ="; 22 fixing.Show(); 23 cout << endl; 24 25 total = coding+fixing; 26 cout << "total time ="; 27 total.Show(); 28 cout << endl; 29 30 system("pause"); 31 return 0; 32 33 }關注第25行,我們可以像對待基本類型一樣對待我們定義的類,對其進行相加運算。
可能我們會問這樣一個問題:如果說將兩個int型數據相加得到的是int 型數據,那么將類相加的意義又是什么呢?
其實將類相加的本質只是:用+替換了某一個方法的使用方式,并不是真正字面理解的將兩個對象加起來!!!很明顯,這里的+調用的原型是Time Time::operator+(const Time &t)const
我們可以認為operator+替代了原來的sum這一名字。因此實際當使用coding+fixing時,使用的是coding.operator+(fixing).因此,當我們看到將類相加時,第一反應應該是:調用了類中的某個方法,而該方法的功能是完成了某種加法運算,而不是思考將類相加時什么含義!!!
參考:C++入門之深入剖析——類深入
轉載于:https://www.cnblogs.com/shaonianpi/p/9905618.html
總結
以上是生活随笔為你收集整理的c++入门之运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动手动脑4
- 下一篇: cs224n第一讲深度自然语言处理