キャスト演算子のオーバーロード
http://homepage2.nifty.com/well/Operator.html#type
#include <iostream> using std::cout; using std::endl; class CSample { public: // intへのキャストのオーバーロード operator int () { return 100; } }; int main () { CSample obj; int i = static_cast<int>(obj); cout << i << endl; return 0; }
$ main 100
ちゃんとoperator intが呼ばれています。
よく見ると、operator intの宣言時に戻り値を指定していません。
これはキャスト演算子のオーバーロードなので、そもそもその型へキャストをするのが明白なのでわざわざ戻り値にintを指定する必要がないからですね。