1. 作用
類透過自定義的型別轉換運算子,可以將一個型別轉換成另一個型別。例如將自定義的Student
類轉換成std::string
類。
雖然在格式上和運算子過載類似,但運算子過載是一個成員函式,而型別轉換運算子不是,因為沒有返回值。
2. 格式
operator type() [const];
type
:表示轉化後的資料型別。例如int
,std::string
- cosnt:可有可無,加了表示禁止在該函式內修改類成員變數。
3. 例項
-
實現:
class Student { private: int m_id; public: Student(); Student(int id); // 型別轉換運算子 operator std::string(); }; Student::Student(int id): m_id(id){} Student::operator std::string(){ return std::to_string(this->m_id); }
-
測試:
int main(int argc, char *argv[]){ Student s = 123; std::string str = s; std::cout << str << std::endl; return 0; }
-
輸出:
123
型別轉換成功
4. 注意事項
- 不允許轉換成陣列或者函式型別,但允許轉換為指標(包括陣列指標以及函式指標)或者引用型別
- 型別轉換運算子沒有顯式的返回型別,也沒有形參
- 必須定義成類的成員函式
- 型別轉換函式通常應該為const型別,不是const型別也行。
- 並且轉換的型別要與return結果型別相同
- 類型別轉換函式不能呼叫。而是透過
=
直接使用。