explicit・コンストラクタを明示する
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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キーワードで宣言すると良さそうです。
スポンサーリンク
>> 次の記事 : クラスの中にメンバ関数(メソッド)を実装する
<< 前の記事 : クラスで自動的に生成されるメンバ関数
- - 関連記事 -
- 派生クラスのコンストラクタ・デストラクタ
- 派生クラスによる関数の隠蔽
- 仮想クラス
- 抽象クラス
- 仮想関数・virtualキーワード
- 親クラスの引数ありコンストラクタを子クラスから初期化・動的サイズのスタック
- クラスのアクセス制限キーワード・private, protected, public
- スタックを実装したクラスを拡張する
- クラス継承・親クラスと子クラス
- static・静的メンバ関数
- static・静的メンバ変数
- 定数のconstメンバ関数をクラスに宣言
- 定数のconstメンバ変数をクラスに宣言
- フレンドクラス・friend
- フレンド関数・friend
- クラスの中にメンバ関数(メソッド)を実装する
- クラスで自動的に生成されるメンバ関数
- コピーコンストラクタ
- 引数つきのコンストラクタを持つクラス定義
- コンストラクタで自動的に初期化する
スポンサーリンク