C 之轉換與類型別

2021-07-08 12:50:58 字數 1007 閱讀 8737

轉換的作用:

轉換可以使類型別物件支援混合型別的表示式(通過過載操作符,可能需要幾十個過載函式),如

類型別物件與int 的算術運算等

可以用乙個實參呼叫的非explicit建構函式定義了乙個隱式轉換,當提供了實參型別的物件而需要乙個類型別物件時,編譯器將使用該轉換。這種建構函式定義了實參型別到類型別的轉換;

可以通過轉換操作符定義類型別其它型別的轉換

conversion operator 是一種特殊的類成員函式,它定義將類型別轉換為其他型別值的轉換;

轉換操作符在類定義體內宣告,保留字operator 之後跟著轉換的目標型別;

轉換函式採用如下的通用形式:

operator type();

type 表示內建型別名,類型別名或由類型別別名定義的名字。任何可作為函式返回型別的型別(void 除外)都可以定義轉換函式;

一般而言,不允許轉換為陣列或者函式型別,轉換為指標以及引用型別是可以的;

轉換函式必須是成員函式,不能指定返回型別,並且形參表必須為空;

雖然轉換函式不能指定返回型別,但是每個轉換函式必須顯式的返回乙個指定型別的值;

類型別轉換後面不能再跟另乙個類型別轉換,類型別轉換之前或之後可以進行標準轉換

class testclassconversion

//copy control

testclassconversion(const testclassconversion & m):i(m.i),s(m.s),ivec(m.ivec) {}

testclassconversion & operator=(const testclassconversion & m)

~testclassconversion() {}

//conversion operator

operator int() const ;

void ****(int i)

{ std::cout<<"value is : "<(t) + 7;

std::cout<

轉換與類型別

1 轉換操作符是一種特殊的類成員函式。它必須是成員函式,不能指定返回型別,並且形參表必須為空。它定義將類型別值轉變為其他型別值的轉換。轉換操作符在類定義體內宣告,在保留字 operator 之後跟著轉換的目標型別 operator type 2 類型別轉換之後不能再跟另乙個類型別轉換。如果需要多個類...

C 類型別轉換

轉換建構函式和型別轉換運算子共同定義了類型別轉換,這樣的轉換有時也被稱為使用者定義的型別轉換。型別轉換運算子時類的一種特殊的成員函式,它負責將乙個類型別的值轉換稱其它型別,和轉換建構函式的功能恰恰相反,一般形式如下 operator type const 其中type表示型別,型別轉換運算子可以面向...

C 之列舉型別與列舉類

enumtype.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std 定義乙個列舉型別,可以通過這個定義相應的列舉成員的識別符號 並用其中的乙個為他們賦值 定義在main函式體外屬於全域性變數 enum gameresult ...