キャスト演算子のオーバーロード

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を指定する必要がないからですね。