プロが教えるわが家の防犯対策術!

C++についてです。

class aaa;
class bbb;
とあったとします。

class aaaは、内部にclass bbb型の配列を
持っているとすると、aaaをdeleteする場合には
aaaのデストラクタがcallされると思うのですが
bbbのデストラクタは自動でcallされるのでしょうか
(class bbbは、明示的にdeleteしないといけないのでしょうか?)

宜しく御願い致します。

A 回答 (2件)

class aaa { bbb foo[3]; ... };


むしろdeleteすれば、windowsならエラーが発生します。
deleteはnewしたものに行うのです。

もしclass aaa { bbb* foo; ... };で

foo = new bbb();
としたなら
delete fooとする必要があります。

newはmalloc(...)とコンストラクタの呼び出し
deleteはfree()とデストラクタの呼び出しをセットにしたものといえば
わかりやすいでしょうか?
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
大変勉強になりました。

お礼日時:2005/09/21 09:42

class bbb { ... };


class aaa { bbb foo[3]; ... };
みたいな形なら bbb のデストラクタは自動的に呼出されます.
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
勉強になりました。

>みたいな形なら bbb のデストラクタは自動的に呼出されます.
ということですが、宣言方法等の違いにより
デストラクタが自動でcallされないケースが存在する
ということでしょうか?

※あげ足を取っているつもりはありません。

お礼日時:2005/09/21 09:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!