問題:
類型別是否能夠型別轉換到普通型別呢?
#include using namespace std;
class test
;int main()
輸出:
test.cpp: in function 『int main()』:
test.cpp:14: error: cannot convert 『test』 to 『int』 in assignment
語法規則:
operator type ()
#include using namespace std;
class test
int value()
operator int ()
};int main()
輸出:
t.value() = 100
i = 100
t 這個物件為 test 型別,怎麼可能用於初始化 int 型別的變數呢!現在就報錯嗎?不急,我看看有沒有型別轉換函式!ok,發現 test 類中定義了 operator int () ,可以進行轉換。
類型別之間的相互轉換?!
型別轉換函式 vs 轉換建構函式
#include using namespace std;
class test;
class value
explicit value(test& t)
};class test
};int main()
輸出:
operator value ()
注意:
當 value 類中 value(test& t) {} 不使用 explicit 修飾,在編譯時將與 test 類中的 operator value () 產生匹配衝突。
error: conversion from 『test』 to 『value』 is ambiguous
note: candidates are: test::operator value()
note: value::value(test&)
#include using namespace std;
class test;
class value
explicit value(test& t)
};class test
};int main()
輸出:
operator value ()
工程中不推薦使用型別轉換函式。隱式的型別轉換可能會產生意想不到的問題。
42 型別轉換函式(下)
類型別是否能轉換為普通型別?c 類中可以定義型別轉換函式,型別轉換函式用於將類物件轉換為其它型別。語法規則 operator type 返回type型別 type ret return ret include include using namespace std class test int va...
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...