在需要做資料型別轉換時,一般顯式的寫法是:
[cpp]view plain
copy
"font-size:18px;"
>type1 i;
type2 d;
i = (type1)d; //顯式的寫型別轉,把d從type2型別轉為type1型別
這種寫法不能做到無縫轉換,也就是直接寫 i = d,而不需要顯式的寫(type1)來向編譯器表明型別轉換,要做到這點就需要介紹一下「型別轉換操作符」,拿最簡單的基本型別封包解包來舉例:
[cpp]view plain
copy
class
integer
; integer::integer(int
v)
/*!*@brief 過載賦值操作符,可以做到 integer i = 10;//把i當基本資料型別使用
*/integer& integer::opetaror =(const
int&v)
/*!*@brief 過載型別轉換操作符,可以做到int i; integer it; i = it; //it直接轉為int型別,然後賦值給i
*/integer::operator int
()
#include
using
namespace
std;
intmain()
這是int型別轉換的寫法,相應的,long,float,double等等的型別轉換方法一樣,統一的說,可以抽象的寫成
operator type();只要type是乙個型別,包括基本資料型別,自己寫的類或者結構體都可以轉換。
型別轉換和操作符過載 c
也許你從來沒有考慮過型別轉換和操作符過載的問題,畢竟在很多時候,我們都是系統標準型別,使用內建的一些轉換函式和操作符。但是假設你經常性地需要建立自定義型別 或者結構體 同時你想為它們都實現更加豐富的效果,那麼了解.net所支援的型別轉換和操作符過載就顯得有些必要了 下面看看乙個結構體的定義 publ...
C 類的操作符過載 型別轉換
這裡總結一下c 裡面類的操作符的過載以及型別轉換的定義,作為對c primer plus第11章的總結。通過操作符過載,可以直接定義兩個型別之間的操作符 加減乘除等 乙個例子是 class vector vector a,b vector c a b 在vector上使用加法運算子操作符過載有兩種實...
C 過載操作符與轉換
明智的使用操作符過載可以使類型別的使用像內建型別一樣直觀。過載操作符必須具有至少乙個類型別或列舉型別的運算元,這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。過載操作符並不保證運算元的求值順序,尤其是,不會保證內建邏輯and 邏輯or和逗號操作符的運算元求值,在 和 的過載版本中,...