型変換関数 と呼ばれる、クラスのメンバー関数を定義することができ、
これは、そのクラスの型を指定された別の型に変換するものです。
>>-+-----------+--operator--+----------+--conversion_type-------> '-class--::-' +-const----+ '-volatile-' >--+----------------------+--(--)--+---------------------+----->< | .------------------. | '-{--function_body--}-' | V | | '---pointer_operator-+-'
クラス X に所属する型変換関数は、 クラス型 X から conversion_type で指定する型に変換を指定します。 次のコードは operator int() という 型変換関数を示しています。
class Y { int b; public: operator int(); }; Y::operator int() { return b; } void f(Y obj) { int i = int(obj); int j = (int)obj; int k = i + obj; }
関数 f(Y) にある 3 つのステートメントはすべて、 型変換関数 Y::operator int() を使用します。
クラス、列挙型、typedef 名、関数型、 または配列型は、conversion_type で宣言、または定義することはできません。 型変換関数は、 型 A のオブジェクトを、型 A、A の基底クラス、または void に変換するためには使用できません。
型変換関数には引き数がなく、戻りの型が暗黙的に変換の型に なります。型変換関数は継承することができます。 仮想変換関数は使用できますが、静的変換関数は使用できません。
関連参照