C++中沒有返回型別的函式有3個,建構函式、解構函式、型別轉換函式。
operator const char *() const
如果是過載*的話,那應該寫成:const char operator * () const而上面所寫的那樣,而且即使是這樣寫那也不正確的,
因為運算子過載中有幾個運算子的返回值是有格式的(約定),如operator * 在過載時通常返回值是classType&或者const classType& 。
operator const char*() const是型別轉換函式的定義,即該型別可以自動轉換為const char*型別。至於最後一個const,
那個大家都知道是對類成員的限制(不允許更改物件的狀態)。
型別轉換運算子,只要你把XXX物件隱式或者顯式轉換為T物件時,它都會被自動呼叫。
#include<iostream> using namespace std; //型別轉換運算子過載,只要你把XXX物件隱式或者顯式轉換為T物件時,它自動被呼叫 template<class T> class Transfer { public: Transfer(int arg):i(arg){} operator T() const { return i; } private: int i; }; int main() { Transfer<double> t(3); //double d =static_cast<double>(t);//顯示轉換 double d = t;//隱式轉換 cout<<d; getchar(); return 0; }