operator 型別轉換及過載

2021-06-23 03:31:07 字數 1479 閱讀 7470

一、型別轉換

型別轉換函式的一般形式為 :

operator

型別名 ()

在函式名前面不能指定函式型別,函式沒有引數.

如: complex::operator double()

int main()

如果在complex類中沒有定義型別轉換函式operator double,

程式編譯

將出錯. 因為不能實現double型資料與complex類物件相加. 現在,一定了成員函式operator double, 就可以利用它將complex類物件轉換為double型資料. 請注意 : 程式中不必顯式地呼叫型別轉換函式,它是自動被呼叫的,即

隱式呼叫

.二、operator 過載圓括號

include using namespace std;

class time

//版本0,返回時間表示的秒數

int operator()()

//版本1,設定為整點

void operator()( int h )

//版本2,設定整小時和分鐘

void operator()( int h, int m )

//版本3,設定時分秒

void operator()( int h, int m, int s )

friend ostream& operator<<( ostream& os, const time& ct )

};int main()

三、過載解引用

t& operator*() const

return *_ptr;

}

四、過載->

#include using namespace std;

class a

};class b

void action()

};class c

void action()

};int main(int argc, char *argv)

上面**輸出結果是:

action in class c!

action in class a!

c是物件,c後面的箭頭操作符使用的是過載箭頭操作符,即呼叫類c的operator->()成員函式。此時返回的是類b的物件,所以呼叫類b的operator->()成員函式,b的operator->()返回的是指標,所以現在可以使用內建箭頭操作符了。對b的operator->()返回的指標進行解引用,然後呼叫解引用後的物件的成員函式action,此時呼叫的就是類a的action()。這裡存在乙個遞迴呼叫operator->()的過程,最後再使用一次內建含義的箭頭操作符。

operator過載整理

過載的操作符在類體中被宣告,宣告方式如同普通成員函式一樣,只不過他的名字包含關鍵字operator,以及緊跟其後的乙個c 預定義的操作符。可以用如下的方式來宣告乙個預定義的 操作符 class person inline bool operator const person ps const 實現方...

operator 過載函式

今天在看書時發現了乙個有意思的地方 class textblock char operator size t position private string text int main 對於 類的運算子過載函式 char operator size t position 其返回值是類成員text的引...

operator運算元 隱式型別轉換

3.參考資料 對於 operator 運算子,除了常用的operator overloading 操作符過載 之外,還有operator casting 操作隱式轉換 的用法。c 可以通過operator實現過載操作符,格式如下 return type operator operand parame...