explicit・コンストラクタを明示する

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

クラスのインスタンス化は、以下のようにして行います。

スポンサーリンク

class int_a {
    public:
        int_a(unsigned int size);
 
int_a exp(10);    // インスタンス化
int_a exp = 10;    // これでもインスタンス化
}

int_a exp(10); // インスタンス化
int_a exp = 10; // これでもインスタンス化

の2つの書き方は、インスタンス化の方法として、どちらも有効です。
個人的には、「int_a exp(10);」のほうが分かりやすいと思います。
ですので、「int_a exp = 10;」のインスタンス生成の書き方ができないようにするために、explicitキーワードを用いて、明示的なコンストラクタを宣言する方法があります。

class int_a {
    public:
        explicit int_a(unsigned int size);
 
int_a exp(10);    // インスタンス化
int_a exp = 10;    // この書き方は無効になる
}

明示的なコンストラクタを、explicitを用いて上記のように書けば、オブジェクトに値を代入するなどして、意図しない動作を抑制できます。
コンストラクタを明示する場合は、explicitキーワードで宣言すると良さそうです。

スポンサーリンク
 
スポンサーリンク