1.不能過載的: . :: .* ?: sizeof
2.操作符過載是通過函式實現的。
class complex
void printcom()
};complex complexadd(complex &c1,complex &c2)
complex operator+(complex &c1,complex &c2)
void main()
操作符過載的兩種方法:
1.友元函式實現操作符過載
注意到沒有,我們的complex類中的a,b成員變數是public的,這樣全域性過載函式在外部才能訪問類的公有成員,但是一般情況下,我們將類的成員變數設定為私有的。那麼就不能再使用全域性過載函式了,有兩種解決方案,一種是友元函式實現,一種是成員函式實現 。我們先看友元函式實現,其實很簡單。我們只要將前面的全域性過載函式宣告為complex類的友元函式即可,這樣友元函式在外部就可以訪問類的私有成員變數。
class complex
void printcom()
}complex operator+(complex &c1,complex &c2)
2.成員函式實現操作符過載
另一種實現訪問私有變數的方法就是通過使用成員函式。
注意:左運算元被隱藏在this指標中。
class complex
void printcom()
//通過類的成員函式,實現 - 號過載。
//注意:隱藏了this指標
complex operator-(complex &c2)
}void main()
接下來,看看單運算元的操作符過載。
1.前置++(–)過載
class complex
void printcom()
//使用成員函式實現 前置 --
complex& operator--()
};//全域性函式實現前置++,在類中宣告為類的友元函式
//這裡一般返回值為類的引用而不是乙個匿名物件
complex& operator++(complex &c2)
void main()
2.後置++(–)過載
因為後置++的過載函式和前置++的過載函式引數和名稱都一樣,c++為了以示區別,在後置++的過載函式的引數中多加了乙個int引數,just為了區別前置++,沒有任何意義。
class complex
void printcom()
//成員函式實現後置 --
complex operator--(int)
};//全域性函式實現後置++
// 為啥返回返回乙個物件,而不是乙個引用?
// 因為,complex tmp是乙個區域性物件,該函式呼叫結束之後tmp物件會被**,c++通過在記憶體中建立乙個匿名物件,將tmp的記憶體拷貝給匿名物件返回,所以,這裡返回乙個匿名物件比較合適。
complex operator++(complex &c2,int)
void main()
友元函式過載和成員函式過載的區別?
什麼時候該用友元函式過載,什麼時候該用成員函式過載呢?我們先看下面的例子。
#include
class complex
void printcom()
};//使用全域性函式實現《過載
//可以使用類成員函式實現《過載嗎?
//不能,因為ostream類的源**我們不能修改,所以只能使用全域性函式結合友元函式實現《過載
//這是友元函式存在的最大的意義,一般情況下友元函式都用在於此,其他情況都不建議使用友元函式。
void
operator
<<(std::ostream &out , complex &c2)
void main()
如何實現鏈式程式設計
#include
class complex
void printcom()
};std::ostream& operator
<<(std::ostream &out , complex &c2)
void main()
c 中 操作符過載
操作符過載 1.有先後順序,如 t3 t1 t2 則t1 t2等價於t1.operate t2 2.對 操作符進行過載時,如aa是有本質區別的。操作符過載就是用函式的方法對乙個操作符進行重新定義,在該函式中定義了操作符所要完成的功能。其中cout是輸出流ostream中的物件 元素 3.a cout...
C 中 操作符過載
在實際程式中遇到一操作符問題,記錄下來方便以後查詢。在寫hashtable資料結構中,遇到操作符過載問題,具體需求如下 1.a x b 如果a x 為空,則新增記錄 2.b a x 如果a x 為空,則提示出錯 對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過...
c 中過載《操作符
在類定義中,有時候我們需要直接利用cout來列印出類中的資料,此刻就需要過載 操作符來實現 假定定義了乙個類time 然後宣告了乙個類 time a cout 這樣的語法肯定是會報錯的,此刻就需要過載operator 要怎麼做呢?首先,在過載函式中,要訪問到類time中的私有成員的資料,所以我們需要...