[C++] コンストラクタの初期化リストと配列

| | コメント(0) | トラックバック(0)

コンストラクタでメンバ変数を初期化する際には、代入じゃなくて、初期化リストを使う。

/**
 * CSampleクラス
 * 
 * @date 2008/04/30
 */
class CSample
{
    int    _nTest;
    int*   _pnTest;
    …

こんなメンバ変数持ったクラスだったら、初期化リスト使った初期化はこうなる。

/**
 * コンストラクタ
 */
CSample::CSample():
    _nTest(0),
    _pnTest(NULL)
{
}

で、メンバ変数が配列とか構造体のときは、どうすんのかと思って調べたけど、見つからなかった。試しに次のメンバ変数を初期化リストに入れてデバッグしてみた。

/**
 * CSampleクラス
 *
 * @date 2008/04/30
 */
class CSample
{
    int        _arynTest[100];    ←配列
    ST_TEST    _stTest;           ←構造体
    …
}

初期値を引数に入れようとするとエラーになったから、空にしてビルドした。

/**
 * コンストラクタ
 */
CSample::CSample():
    _arynTest(),
    _stTest()
{
}

で、このとき構造体"_stTest"は0埋めされてたから、とりあえず構造体は0で初期化されるっぽい。ただ配列"_arynTest"は0埋めとかされてなかった。この方法だと配列は初期化できないみたい。

配列のメンバ変数の初期化は、普通に{}内で、memsetとか使うしかないか。

トラックバック(0)

このブログ記事を参照しているブログ一覧: [C++] コンストラクタの初期化リストと配列

このブログ記事に対するトラックバックURL: http://blog.1122soft.com/mt4/mt-tb.cgi/46

コメントする

プロフィール

  • 1983年生まれ。
    C++、PHP、JavaScript、ActionScriptで何か作ってます。

技術書

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス (C++ in‐depth series)
JavaScript 第5版
まるごとJavaScript & Ajax ! Vol.1
CakePHPガイドブック
CakePHP ポケットリファレンス (Pocket Reference)
Powered by Movable Type 4.01

このブログ記事について

このページは、1122が2008年4月30日 06:56に書いたブログ記事です。

ひとつ前のブログ記事は「[CakePHP] DB設計ができない」です。

次のブログ記事は「[C++] do~while (false)が好き」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2008年10月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

リンク