8

それぞれが実装されたデストラクタを持つオブジェクトを指す2つのポインタを持つ構造を持っていると仮定します。また、ヘッドがNULL以外の値*studentおよび*nextを持つListnode構造を指していると仮定します。

struct Listnode {    
  Student *student;
  Listnode *next;
};
Listnode *head =  new Listnode;

Listnodeポインタで予約語を使用すると、delete「head」はその構造内のデストラクタを呼び出します。StudentクラスとListnodeクラスは、それぞれ「student」と「next」が指します。つまり、* headを削除すると、* studentも削除され、*next提供されたheadがそのListnodeへの唯一のポインタでした。

4

2 に答える 2

10

デストラクタがポインタを~Listnode呼び出さない限り、そうではありません。deleteただし、呼び出しdeleteは、非ポインターメンバーのデストラクタを呼び出します。

于 2012-04-10T00:49:45.917 に答える
1

いいえ!最初に手動で削除する必要がありますが、デストラクタメソッドで削除コードを追加することもできます。

于 2012-04-10T00:49:40.783 に答える