一.運算元與表示式
•運算元為左值
–complex lv (1, 2);
complex const rv (3, 4);
++lv;
–rv; // 錯誤
•表示式的值為左值,且為運算元本身(而非副本)
–complex a (1, 2), b (3, 4);
++++a; // ++(++a)
++a = b; // b->a
二.成員函式
•非常函式以支援左值型運算元,非常返回值以支援左值型表示式的值,返回自引用即運算元本身
三.全域性函式–class complex
};
•非常引數以支援左值型運算元,非常返回值以支援左值型表示式的值,返回引用型引數即運算元本身
一.運算元與表示式–complex&
operator++
(complex&
opd)
•運算元為左值
–complex lv (1, 2);
complex const rv (3, 4);
lv++;
rv–; // 錯誤
•表示式的值為右值,且為運算元在運算前的副本
–complex a (1, 2), b (3, 4);
a++++; // 錯誤
a++ = b; // 錯誤
二.成員函式
•非常函式以支援左值型運算元,常返回值以支援右值型表示式的值,整型啞元引數以區別於前自增減
•對於後自增減表示式,編譯器在呼叫操作符函式時會多傳乙個整型引數,通過過載解析匹配到字尾操作符函式–class complex
};
–a++; // a.operator++ (0);
–++a; // a.operator++ ();
三.全域性函式
•非常引數以支援左值型運算元,常返回值以支援右值型表示式的值,整型啞元引數以區別於前自增減
•對於後自增減表示式,編譯器在呼叫操作符函式時會多傳乙個整型引數,通過過載解析匹配到字尾操作符函式–complex const
operator++ (complex& opd, int)
–a++; // ::operator++ (a, 0);
–++a; // ::operator++ (a);
一.運算元與表示式
•左運算元為左值形式的輸出流(ostream)物件,右運算元為左值或右值
–complex lv (1, 2);
complex const rv (3, 4);
cout << lv;
cout << rv;
•表示式的值為左值,且為左運算元本身(而非副本)
–complex complex (1, 2);
cout << complex << endl;
–cout.operator<< (comlex).operator<< (endl);
::operator<< (::operator<< (cout, complex), endl);
二.全域性函式
•左運算元的型別為ostream,若以成員函式形式過載該操作符,就應將其定義為ostream類的成員,
該類為標準庫提供,無法新增新的成員,因此只能以全域性函式形式過載該操作符
•非常第一引數以支援左值型左運算元,常第二引數以支援右值型右運算元,非常返回值以支援左值型表示式的值,
返回引用型第一引數即左運算元本身
一.運算元與表示式–ostream& operator
<< (ostream& lhs, complex const& rhs)
•左運算元為左值形式的輸入流(istream)物件,右運算元為左值
–complex lv (1, 2);
complex const rv (3, 4);
cin >> lv;
cin >> rv; // 錯誤
•表示式的值為左值,且為左運算元本身(而非副本)
–complex c1, c2;
cin >> c1 >> c2;
–cin.operator>> (c1).operator>> (c2);
::operator>> (::operator>> (cin, c1), c2);
二.全域性函式
•左運算元的型別為istream,若以成員函式形式過載該操作符,就應將其定義為istream類的成員,
該類為標準庫提供,無法新增新的成員,因此只能以全域性函式形式過載該操作符
•非常第一引數以支援左值型左運算元,非常第二引數以支援左值型右運算元,非常返回值以支援左值型表示式的值,返回引用型第一引數即左運算元本身
–istream& operator>> (istream& lhs, complex& rhs)
操作符函式及過載(1)
在特定條件下,編譯器有能力把乙個由運算元和操作符共同組成的表示式,解釋為對乙個全域性或成員函式的呼叫,該全域性或成員函式被稱為操作符函式 通過定義操作符函式,可以實現針對自定義型別的運算法則,並使之與內建型別一樣參與各種表示式 一.成員函式 形如l r的雙目操作符表示式,將被編譯器解釋為 l.ope...
操作符函式及過載(2)
一.運算元與表示式 左右運算元均可為左值或右值 complex lv 1,2 complex const rv 3,4 lv rv rv lv 表示式的值必須是右值 complex a 1,2 b 3,4 c 5,6 a b c 錯誤二.成員函式 常函式以支援右值型左運算元,常引數以支援右值型右運算...
操作符函式及過載(4)
常用於在容器型別中以下標方式獲取資料元素 非常容器的元素為左值,常容器的元素為右值 一.函式操作符 如果乙個類過載了函式操作符,那麼該類的物件就可以被當做函式來呼叫,其引數和返回值就是函式操作符函式的引數和返回值 引數的個數 型別以及返回值的型別,沒有限制 唯一可以帶有預設引數的操作符函式 一.解引...