什麼時候使用全域性函式過載操作符?什麼時候使用成員函式過載操作符?
陣列類:最終完整**
c++編譯器會為每個類提供預設的賦值操作符=
++操作符過載
不要過載&&和||,為什麼?
小結通過operator關鍵字能夠將操作符定義為全域性函式
操作符過載的本質就是函式過載
類的成員函式是否可以作為操作符過載的函式?
a:當然可以
#include #include using namespace std;
class complex
complex operator+ (const complex& c2); //成員函式:+操作符過載
//注意:此處有乙個隱藏引數:this指標
friend ostream& operator<< (ostream& out, const complex& c);
};//複習:當無法修改左運算元的類時,使用全域性函式進行過載(例如:ostream的《操作符,在標準庫中,無法修改ostream類)
ostream& operator<< (ostream& out, const complex& c)
int main(int argc, char *ar**)
//呼叫
for(int i=0; iarray.h
#ifndef _array_h_
#define _array_h_
class array
;#endif
array.cpp
#include #include "array.h"
array::array(int length)
mlength = length;
mspace = new int[mlength];
}array::array(const array& obj)
for(int i=0; ic++編譯器會為每個類提供預設的賦值操作符
預設的賦值操作符只是做簡單的值複製
類中存在指標成員變數時就需要過載賦值操作符
++操作符只有乙個運算元
++操作符有字首和有字尾的區分
問題:如何過載++操作符才能區分前置運算和後置運算?
操作符過載是通過函式過載實現的
c++中通過乙個佔位引數來區分前置運算和後置運算
部分**
complex operator++ (int); //obj++
complex operator++ (); //++obj
complex complex::operator++ (int)
complex complex::operator++ ()
全部**:
#include #include using namespace std;
class complex
int geta()
int getb()
complex operator+ (const complex& c2);
complex operator++ (int); //obj++
complex& operator++(); ++obj
friend ostream& operator<< (ostream& out, const complex& c);
};ostream& operator<< (ostream& out, const complex& c)
int main(int argc, char *ar**)
test operator+ (const test& obj)
{test ret(0);
cout<
&&和||是c++中非常特殊的操作符
&&和||內建實現了短路規則
操作符過載是靠函式過載來完成的
運算元作為函式引數傳遞
c++的函式引數都會被求值,無法實現短路規則
操作符過載可以直接使用類的成員函式實現
=, , ()和->操作符只能通過成員函式進行過載
++操作符通過乙個int引數進行前置與後置的過載
c++中不要過載&&和||操作符
操作符過載下
operator關鍵字能將操作符定義為全域性函式,本質即函式過載,類的成員函式是否可作為操作符過載的函式?class complex complex operator const complex c2 complex complex operator const complex c2 隱式第乙個引數...
操作符過載
ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...
操作符過載
1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...