class complex
complex():complex(0,0){}
~complex(){}
friend ostream& operator << (ostream& cout, complex& par);
private:
int real;
int imag;
}ostream& operator << (ostream& cout, complex& par);
class complex
complex():complex(0,0){}
~complex(){}
complex operator + (complex par)
private:
int real;
int imag;
}
成員函式執行機理:
假如c1與c2d都為complex類,則,c1+c2被編譯系統解釋為c1.operator +(c2);
1. 實際上流操作符左側必須為cin或cout,即istream或ostream類,不是我們所能修改的類;或者說因為流操作符具有方向性。
這導致我們不能使用成員函式過載,只能使用類外的普通函式過載。
2. 由於我們將類內部的私有成員進行輸入和輸出,所以過載函式必須有對內部成員訪問的許可權。
這導致我們不能使用普通的函式過載,只能使用友元函式過載。
但是使用友元函式會破壞類的封裝性,因此好的解決方法是:
使用一些成員函式來暴露對類成員的訪問,然後使用類外的普通函式過載來進行類成員的輸入輸出。
**如下:
class complex
complex():complex(0,0){}
~complex(){}
int getreal()
int getimag()
void setreal(int parm)
void setimag(int parm)
private:
int real;
int imag;
}ostream& operator << (ostream& cout, complex& par);
為什麼不要過載 , 操作符
是一種邏輯運算子,它內建實現了短路原則,比如 condition1 condition2,如果 condition1 不滿足,那麼 condition2 的值將不會得到計算,同理如果 condition1 condition2,當 condition1 為真時,condition2 的值也不會得到計...
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 為空,則提示出錯 對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過...