類型別是否能轉換為普通型別?
c++類中可以定義型別轉換函式,型別轉換函式用於將類物件轉換為其它型別。
語法規則:
operator type() //返回type型別
type ret;
return ret;
#include
#include
using namespace std;
class test
int value()
operator int () //型別轉換函式 將類型別轉換為 int
};int main()
explicit value(test& t) //轉換建構函式
};class test
int value()
operator value()
};int main()
{
test t(100);
value v = t; // value v = t.operatpr value();
//沒有explicit的話,value(t); v的轉換建構函式
return 0;
無法抑制隱式的型別轉換函式呼叫,型別轉換函式可能與轉換建構函式衝突,工程中以type totype()的公有成員代替型別轉換函式,將
operator value()
{value ret;
cout << "operator value()" << endl;
return ret;
改為:value tovalue()
{value ret;
cout << "operator value()" << endl;
return ret;
當前物件轉換為value物件,value v=t.tovalue();
42 型別轉換函式(下)
1 問題 我們上一課的內容是將普通型別轉換成類型別,那麼問題來了,我們能否將類型別轉換到普通型別?單純這樣肯定是不行的,我們必須引入新的規則 2 型別轉換函式 operator type include using namespace std class test int geti operator...
42 型別轉換函式(下)
注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 問題 類型別是否能夠型別轉換到普通型別?二 型別轉換函式 1 c 類中可以定義型別轉換函式 2 型別轉換函式用於將類物件轉換為其它型別 3 語法規則 operator ty...
C 42 型別轉換函式 (下)
問題 類型別是否能夠型別轉換到普通型別呢?include using namespace std class test int main 輸出 test.cpp in function int main test.cpp 14 error cannot convert test to int in ...