http://www.kuzbass.ru:8086/docs/isocpp/special.html#class.conv クラスの型変換はコンストラクタと型変換関数を使って定義できる。これらの型変換は、ユーザー定義型変換と呼ばれ、暗黙的型変換、変数初期化子、明示的型変換に使われる。 ユーザー定義型変換は、型変換の定義が曖昧じゃないときにだけ適用される。型変換は、アクセス制御規則(private, public, protected)に従う。アクセス制御規則は、曖昧さの解決のあと適用される。 もっとも使われるユーザー定義型変換は、単一値への暗黙的型変換だ。 class X { // ... public: operator int(); }; class Y { // ... public: operator X(); }; Y a; int b = a; // NG: X().oper