- ベストアンサー
classのdelete
C++についてです。 class aaa; class bbb; とあったとします。 class aaaは、内部にclass bbb型の配列を 持っているとすると、aaaをdeleteする場合には aaaのデストラクタがcallされると思うのですが bbbのデストラクタは自動でcallされるのでしょうか (class bbbは、明示的にdeleteしないといけないのでしょうか?) 宜しく御願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
class aaa { bbb foo[3]; ... }; むしろdeleteすれば、windowsならエラーが発生します。 deleteはnewしたものに行うのです。 もしclass aaa { bbb* foo; ... };で foo = new bbb(); としたなら delete fooとする必要があります。 newはmalloc(...)とコンストラクタの呼び出し deleteはfree()とデストラクタの呼び出しをセットにしたものといえば わかりやすいでしょうか?
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
class bbb { ... }; class aaa { bbb foo[3]; ... }; みたいな形なら bbb のデストラクタは自動的に呼出されます.
質問者
お礼
御回答ありがとうございます。 勉強になりました。 >みたいな形なら bbb のデストラクタは自動的に呼出されます. ということですが、宣言方法等の違いにより デストラクタが自動でcallされないケースが存在する ということでしょうか? ※あげ足を取っているつもりはありません。
お礼
御回答ありがとうございます。 大変勉強になりました。