操作符過載(下)

2021-10-03 02:36:53 字數 2479 閱讀 2297

什麼時候使用全域性函式過載操作符?什麼時候使用成員函式過載操作符?

陣列類:最終完整**

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...