C++ explicit指定子

explicit指定子は引数付きのコンストラクタに指定して使用します。コンストラクタが暗黙的な利用を禁止し、明示的にしか呼び出せないようにするものします。

class A {
public:
  A(int);
};

のようなクラスAがあったとしよう。

A a;
a = 1;

のようなプログラムがあったとき、変数aに1を代入しているようなコードに見えます。が、実際にはA(int)、つまり、Aのコンストラクタが暗黙的に呼び出され、それをaに代入するという処理になります。コンストラクタA(int)のこのような使われ方を防ぎたいとき、explicit指定子を指定します。explicitが指定されたとき、上と同じような処理をさせるコードは下のように書かなければならないことになります。

A a;
a = A(1);

コメント

コメントする

CAPTCHA