なぜコンストラクタ初期化子を使うの? – 固定ページ 2 – プログラミング – Home

なぜコンストラクタ初期化子を使うの?
 
通知
すべてクリア

[解決済] なぜコンストラクタ初期化子を使うの?

固定ページ 2 / 2

επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

ああ、初期化子では困る場合がひとつあります。
初期化子では初期化の順序をコントロールできません。
必ずclass/struct内に並べたメンバ順になります。


返信引用
い
 い
(@い)
ゲスト
結合: 23年前
投稿: 3
 

「あ」とかいうアホへ。

お前、いちいちカンに触る言い方するよな。何とかなんねぇのか?
だったら答えんでええがな。技術がないのに素行がそれじゃあなあ...。


返信引用
あ
 あ
(@あ)
ゲスト
結合: 23年前
投稿: 47
 

「い」とかいうアホへ。
行動からして、お前も大して俺と変わらんと思うが。
程度の低い者どうし仲良くやろうぜ。類は友を呼ぶってな。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
Topic starter  

>PAI さん
なるほど、言われてみればそうですね。
納得しました。

>επιστημηさん
ふむ。自分では大したことないコストだと思っていても、それを継承したクラスでは
小さなコストが積もり積もって大きくなっているかも、ということですか。
初期化の順序は…初期化子でコントロールできないならクラス宣言でコントロールすれ
ばいいだけだと思いますが。
クラスを宣言する際は、データメンバの順番まで考えなければならないというのは、結
構な落とし穴かもしれませんね。

>い さん
そーいうのに触っちゃダメダメ。

皆さん、レスありがとうございました。得心が行きました。


返信引用
ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 22年前
投稿: 90
 

コンストラクタ初期化子で初期化された変数は、ソース・ブラウザで
捕獲できないので、ここで初期化するのをやめて欲しい、と思ったりする。


返信引用
う
 う
(@う)
ゲスト
結合: 21年前
投稿: 2
 

VS.NET では、IDE上で、クラスのメンバー変数を追加すると
初期化子で初期化されるコードが自動挿入される。

これより、今後は初期化子で初期化という方向に流れていく
のではと思っています。(MSの方針)


返信引用
isshi
 isshi
(@isshi)
ゲスト
結合: 21年前
投稿: 41
 

もう解決しているようですが、参考まで。

Effective C++ 改訂2版の12項に
「コンストラクタでは、代入よりも初期化を使おう」
とあります。
ただし、組み込み型については例外的にコンストラクタ内での代入を
認めています。
シャノンさんがおっしゃるように、「組み込み型では初期化でも代入でも
パフォーマンスに差は無い」というのも理由のひとつのようです。
詳しくは書籍のほうをご覧ください。
(決してアスキーの回し者ではありません。。)


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました