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

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

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

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キーワードで宣言すると良さそうです。


日時: 2008年06月07日 03:08
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/241

この記事にトラックバックされる方は、参照先が分かるようにするために、「explicit・コンストラクタを明示する」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - C言語とC++勉強ルーム