- ベストアンサー
2つの初期化の違いとは?
C言語の初期化とC++のコンストラクタのメリット・デメリットと違いはなんですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
メリットは、自動的にコンストラクタが呼ばれていることが保証でき、init等の初期化関数の呼び漏れがない。 面倒な初期化処理をプログラマが毎回書く必要がない。 コンパイラが暗黙に呼び出して処理してくれるため、 自作のクラスでも限りなくネイティブの型に近い扱いができる。 などなど。 デメリットなんてほぼないのでは?と個人的に思います。 そこだけをみて処理の負荷とか気にする人もいますが、 結局C言語でも初期化関数を呼んでから使わないと 正しく動かないから所期かなのでしょうし、 必要なら(あまり通常は使いませんが)、メモリでの初期化には配置newなども使えますし。 あえて書けば、グローバル変数の初期化タイミングの問題くらいですが、そもそもC++でグローバル変数なんて(ry
その他の回答 (2)
- MrBan
- ベストアンサー率53% (331/615)
constructor と destructor が混ざってるのでは?>デスコンストラクタ? デストラクタのメリットは、もっと大きいと個人的に思います。 変数の解放/終了処理などを毎回書かなくていいのは、 関数からのエラー復帰処理などでかなり便利です。 C言語風の終了処理だと、C++で例外が投入されたら 呼び出されませんが、デストラクタは呼び出し保証がありますし。 (まぁ便利な反面、仮想デストラクタまわりとか、トラップも多いですが…
お礼
デストラクタについて詳しく分かりやすい説明ありがとうございます。 #2さんにも書きましたが、 デストラクタを「デスコンストラクタ」なんて書いて恥ずかしいです>< ^^;テヘ また、分からないことがあったら教えてください^^
- Trick--o--
- ベストアンサー率20% (413/2034)
> デスコンストラクタって? 「デストラクタ」 クラスが破棄されるときに呼ばれる関数。 クラス名の頭に~をつけたものが使われる。 ……っていうこと? コンストラクタでメンバ変数に領域を割り当てて(new)、デストラクタで開放する(delete)とかいうふうに使ったり。
お礼
デストラクタでした はずかしい~>< ご返事ありがとうございました。
お礼
Cの時毎回初期化するのめんどいし、 よく初期化忘れて実行したら警告が出て、 あわてた事良くありました。 そういえばC++はじめてから、 初期化は最初のみで書いた覚えないなぁ。 これがコンストラクタのいいところなのかぁ ありがとうございます。 デスコンストラクタって?