上一節主要講解了c++裡運算子過載函式,在看了單目運算子(++)過載的示例後,也許有些朋友會問這樣的問題。++自增運算子在c或c++中既可以放在運算元之前,也可以放在運算元之後,但是前置和後置的作用又是完全不同的(q前置運算子:先加1,再賦值;後置運算子:先賦值,再加1)。那麼要怎麼過載它們,才可以有效的區分開來呢?今天我就來說說c++中是怎麼處理前置運算子和後置運算子的過載的。以及介紹一下插入運算子(>>)和提取運算子(<
1.在c++裡編譯器是根據運算子過載函式引數表裡是否插入關鍵字int來區分前置還是後置運算。比如:
#include "結果:stdafx.h
"#include
class tdpoint//
三維座標
tdpoint
operator++();//
成員函式過載前置運算子++
tdpoint operator++(int);//
成員函式過載後置運算子++
friend tdpoint operator++(tdpoint& point);//
友元函式過載前置運算子++
friend tdpoint operator++(tdpoint& point,int);//
友元函式過載後置運算子++
void
showpoint();
};tdpoint tdpoint::
operator++()
tdpoint tdpoint::
operator++(int
)tdpoint
operator++(tdpoint&point)
tdpoint
operator++(tdpoint& point,int
)void
tdpoint::showpoint()
intmain()
從示例**裡可以清楚的看出,後置運算子過載函式比前置運算子過載函式多了乙個int型別的引數,這個引數只是為了區別前置和後置運算子,此外沒有任何作用。所以在呼叫後置運算子過載函式時,int型別的實參可以取任意值。
2.在c++中,操作符"<>"被定義為左位移運算子和右位移運算子。由於在iostream標頭檔案中對它們進行了過載,使得它們可以用基本資料的輸出和輸入。
#include "結果:stdafx.h
"#include
intmain()
插入運算子"<
ostream& operator<
提取運算子">>"也是如此,左運算元為istream類的物件,右運算元為基本型別資料。標頭檔案iostrem對其過載的函式原型為istream& operator>>(istream& ,型別名);提取運算子也不能作為其他類的成員函式,可以是友元函式或普通函式。它的一般定義格式為:
istream& operator>>(istream& ,自定義類名&);
#include "結果:stdafx.h
"#include
class complex //
複數類 friend std::ostream&operator
<
友元函式過載提取運算子"<
friend std::istream&operator>>(std::istream& i,complex& com);//
友元函式過載插入運算子">>"
};std::ostream&operator
<
std::istream&operator>>(std::istream& i,complex&com)
intmain()
C 之運算子過載 2
上一節主要講解了c 裡運算子過載函式,在看了單目運算子 過載的示例後,也許有些朋友會問這樣的問題。自增運算子在c或c 中既可以放在運算元之前,也可以放在運算元之後,但是前置和後置的作用又是完全不同的 q前置運算子 先加1,再賦值 後置運算子 先賦值,再加1 那麼要怎麼過載它們,才可以有效的區分開來呢...
c 運算子過載(2)
語法格式 1 類的內部 函式型別 operator 運算子 形參表 2 類中宣告原型 類外定義 class x 函式型別 x operator 運算子 形參表 說明 可以用 return this 返回 當前物件的值 雙目運算子過載 對雙目運算子而言,成員運算子過載函式的形參表中僅有乙個引數,它作為...
C 運算子過載之過載單目運算子
單目運算子只有乙個運算元,但是其過載方法類似於雙目運算子,在這裡以過載單目運算子 為例,介紹單目運算子的過載 注意 和 運算子有兩種使用方式,前置自增運算子和後置自增運算子,它們的作用是不一樣的,為了區分他們,c 約定,在自增 自減 運算子過載函式中,增加乙個int型別的形參,就是後置自增 自減 運...