一定要在operator = 中檢查是否self assignment 物件的自我賦值
1.先清空現有的成員(釋放當前記憶體空間)
2.傳遞拷貝進來的成員
3.return *this
4.可以考慮是否加入轉移賦值class& operator=( class&&);
friend ostream& operator<<(ostream &os, const classa &a);
如要列印private成員在類內宣告為友元函式(最前面加friend)
最好不列印換行符等格式控制,只負責輸出內容。
最好同時定義常量與非常量版本,當作用於乙個常量物件時,下標運算子返回常量引用以確保我們不會給返回的物件賦值。
type& operator(
int index)
const type& operator(
int index)
const
算術(+,-)和關係(==)運算子一般定義為非成員函式,以允許左右側物件轉換。
他們一般不改變物件,以常引用傳遞。
操作符過載注意點 C
a 二元運算子的引數只有乙個,一元運算子不需要引數。之所以少乙個引數,是因為這個引數是隱含的 b 指標操作符 下標操作符 函式呼叫操作符 和賦值操作符 只能以成員函式的形式過載 a 二元操作符需要兩個引數,一元操作符需要乙個引數。不管如何,必須要有乙個引數是類型別物件 防止過載內建型別操作 b 若左...
C 運算子過載的注意事項
1 過載操作符沒必要一定是成員函式,還可以是友元函式。2 過載操作符函式為成員函式主要是你需要操作類內部的成員,必須是成員函式或友元函式才行。3 至於由深淺拷貝的原因要使其成為成員函式,這個不知道。4 如果運算子被過載為全域性函式,那麼只有乙個引數的運算子叫做一元運算子,有兩個引數的運算子叫做二元運...
C 類操作符過載筆記
不能改變操作符優先順序 不能改變操作符的結合性 不能改變操作符所需要的運算元 不能建立新的操作符 對於二元操作符過載,如果操作符左邊是類 那麼就在該類內部成員函式過載操作符即可 如果操作符左邊不是類,而是乙個常量,那麼就必須在類的外部定義乙個操作符過載函式 有乙個最基本條件 一定有乙個一元是乙個自定...