一、型別轉換
型別轉換函式的一般形式為 :
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...