[C++] コンストラクタの初期化リストと配列
コンストラクタでメンバ変数を初期化する際には、代入じゃなくて、初期化リストを使う。
/**
* 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







コメントする