型変換関数

C++型変換関数 と呼ばれる、クラスのメンバー関数を定義することができ、 これは、そのクラスの型を指定された別の型に変換するものです。

>>-+-----------+--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 のオブジェクトを、型 AA の基底クラス、または void に変換するためには使用できません。

型変換関数には引き数がなく、戻りの型が暗黙的に変換の型に なります。型変換関数は継承することができます。 仮想変換関数は使用できますが、静的変換関数は使用できません。

関連参照

IBM Copyright 2003