運算子,我們包括單目運算子、雙目運算子和三目運算子,下面我們討論單目運算子和雙目運算子的過載方式,進一步分析過載成為類成員函式和非成員函式兩種情況。
#includeusing namespace std;
class complex
//建構函式
complex operator+(const complex& c);//+ - * /都是雙目運算子(x+y,就是符號左右兩邊都要有物件),作為類成員函式的時候引數列表就只需要乙個引數,要是作為成員函式相當於另外乙個引數就是你申明的物件,
complex operator-(const complex& c);//你呼叫運算子重函式的時候直接用real和imag即可。
complex operator*(const complex&); //我們一般習慣了定義形參的時候加上乙個變數名,其實是可以省略的,不過在函式具體實現的時候需要補上這個變數名,因為我們需要乙個呼叫引數的物件嘛。
complex operator/(const complex& c);//
complex operator++(); // ++ -- 都是單目運算子了,和上面一樣(x++、++x)作為類成員函式的時候引數列表當然就不需要填入引數了,
complex operator--(); //跟上面的雙目運算子對應著來看,會好理解一些
friend bool operator==(const complex& c1,const complex& c2); //我們申明了乙個友元函式,引數列表中的物件可以直接對私有成員進行呼叫,要是這裡理解有問題還請去複習下友元的知識點哦
//==是雙目運算子,現在它是乙個非成員函式了,所以我們需要跟它傳入兩個引數,還是要跟上面對比著看,理解起來就很輕鬆了。
void display() const;
private:
double real,imag;
};void complex::display() const
{ cout<<"("《需要看的話最好還是把程式貼上到vs中去檢視,運算子過載我個人覺得不好理解的地方我都寫在注釋裡面了。
多型性是指發出同樣的訊息被不同型別的物件接受時導致完全不同的行為。多型的實現要依仗著函式過載、運算子過載和虛函式的概念。
C 中的運算子過載(一) 運算子過載的概念
概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...
PDV的一些個人理解
最近剛剛考完sas base,對這個考試的一大感受就是,只要你理解了pdv,基本上就不成問題。接下來談談我對pdv的理解吧,也算是學習sas的過程中的乙個筆記。sas的執行有兩個階段需要了解,編譯階段 compilation phase 和執行階段 execution phase 編譯階段sas主要...
Reflect 的一些個人理解
vue 3.0出來後,各種原始碼剖解的文章多了起來,其中proxy和reflect兩個api頻繁出現。查詢了一下阮一峰大佬的文件後,自己也有了一些些理解 reflect物件與proxy物件一樣,也是 es6 為了操作物件而提供的新 api。其中reflect是讓以前類似object.definepr...