1. 程式人生 > 實用技巧 >C++零基礎入門:運算子過載你掌握了嗎

C++零基礎入門:運算子過載你掌握了嗎

前言

本章節主要講解是運算子過載。運算子過載是賦予運算子能操作自定義型別的功能。C++運算子過載主要分為以下三類:

類成員函式過載

友元函式過載

流運算子過載

類過載

過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有一個返回型別和一個引數列表。如下實現物件與物件的加法的測試程式碼:

對於上述過載: firstScore+secondScore 一般解析為 firstScore.operator +(secondScore) 的方式。operator+是函式名,物件呼叫成員函式的方式解析物件與物件的加法。所以類過載函式的引數個數是比運算子實際的運算元少1。

友元過載

友元過載,就是過載函式是友元函式,如下判斷兩個美女得分誰高的測試程式碼:

上述程式碼中,我們真正要比較的其實只是兩個美女的各自得分,對於Liu>Di 過載函式的解析過程為 operator>(Liu,DI);operator>是函式名,故友元過載的引數個數是等於運算子的運算元的。

流過載

流運算子的過載只能採用友元的方式,並且流物件當做引數的時候必須採用引用(&)的方式,所以這裡小編單獨歸結為一類。具體例項程式碼如下:

特殊過載

前置++或者-- 與後置++以及--的過載,類過載的時候並不遵循上述情況,通常我們會帶一個int標識引數當做後置++或者--的過載,如下程式碼:

從這一點上看,其實前置之所以比後置快,一目瞭然,躲了一個物件的建立過程。

過載注意項

C++通常習慣單目運算子過載為類的成員函式,雙目運算子過載友元函式,要注意的是有些運算子不能過載以及有些運算子只能過載類成員函式:

=,(),[],-> 只能過載為類成員函式

.,.*,::,?: 不能被過載

C++過載運算子的時候至少有一個數據是自定義型別,這個是過載的必備條件,切記。

如果你想以程式語言立生,建議你先學習C/C++打好基礎。C/C++是一門通用計算機程式語言,是面向過程的語言,其語法結構及其嚴謹,且應用十分廣泛。而且只要將C/C++研究透徹了的話,學習其他語言就會輕鬆很多。

學習更多有關C/C++知識,領取免費資料,【點選連結】瞭解更多!