ああ、初期化子では困る場合がひとつあります。
初期化子では初期化の順序をコントロールできません。
必ずclass/struct内に並べたメンバ順になります。
「あ」とかいうアホへ。
お前、いちいちカンに触る言い方するよな。何とかなんねぇのか?
だったら答えんでええがな。技術がないのに素行がそれじゃあなあ...。
「い」とかいうアホへ。
行動からして、お前も大して俺と変わらんと思うが。
程度の低い者どうし仲良くやろうぜ。類は友を呼ぶってな。
>PAI さん
なるほど、言われてみればそうですね。
納得しました。
>επιστημηさん
ふむ。自分では大したことないコストだと思っていても、それを継承したクラスでは
小さなコストが積もり積もって大きくなっているかも、ということですか。
初期化の順序は…初期化子でコントロールできないならクラス宣言でコントロールすれ
ばいいだけだと思いますが。
クラスを宣言する際は、データメンバの順番まで考えなければならないというのは、結
構な落とし穴かもしれませんね。
>い さん
そーいうのに触っちゃダメダメ。
皆さん、レスありがとうございました。得心が行きました。
コンストラクタ初期化子で初期化された変数は、ソース・ブラウザで
捕獲できないので、ここで初期化するのをやめて欲しい、と思ったりする。
VS.NET では、IDE上で、クラスのメンバー変数を追加すると
初期化子で初期化されるコードが自動挿入される。
これより、今後は初期化子で初期化という方向に流れていく
のではと思っています。(MSの方針)
もう解決しているようですが、参考まで。
Effective C++ 改訂2版の12項に
「コンストラクタでは、代入よりも初期化を使おう」
とあります。
ただし、組み込み型については例外的にコンストラクタ内での代入を
認めています。
シャノンさんがおっしゃるように、「組み込み型では初期化でも代入でも
パフォーマンスに差は無い」というのも理由のひとつのようです。
詳しくは書籍のほうをご覧ください。
(決してアスキーの回し者ではありません。。)