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; }
