implicit conversion operatorです。
暗黙的な変換演算子では、暗黙的に変換先のタイプに変換されないタイプが許可されます。この演算子のより一般的な例としてブール値にオブジェクトを変換している
class Foo{
public:
operator Bar(); // allow implicit conversion of Foo objects to Bar
};
:彼らはFoo
を暗黙的に変換されるオブジェクトのクラスであり、Bar
宛先クラスで以下の構文を有します有効性チェック。これは、標準ライブラリのストリームとスマートポインタで見ることができます。
既存の変換を防ぐ構文、上のバリエーションが存在することを注意して、代わりに明示的な変換を行う必要があります
:
class Foo{
public:
explicit operator Bar(); // allow explicit conversion of Foo objects to Bar
};
誤っ種類を供給するときこれはコンパイルプログラムによってかま取得を防止B
のみを受け入れる関数にタイプB
に変換できるA
があります。確かに、はとなりますが、必ずしもそうではありません。明示的な変換が必要な人を支援するために、これを言語に追加することにしました。
明示的な変換演算子で
、あなたは元のオブジェクトからオブジェクトを作成することができますいずれかの構造を介して、または明示的なキャストによって(ターゲット型のオブジェクトの構築にそれを使用して):
オペレータは暗黙的です変換演算子。最も一般的な形式は演算子boolです。クラスオブジェクトは、unique_ptrやshared_ptrのようにブール式で使用できます –
jaggedSpire