struct node
{
node(int _value, node* _next) : value(_value), next(_next) {}
int value;
node* next;
};
node *p = new node(10, NULL);
delete p;
のノード用のメモリブロックの割り当てを解除DELETE`、operator delete
は、まず、node
のデストラクタを呼び出し、もともとp
に割り当てられた生のメモリブロックの割り当てを解除します。どのように `演算子は、私の理解に基づいて、LinkedListの
struct node
にはカスタマイズされたデストラクタが用意されていないため、コンパイラはデフォルトのデストラクタを提供します。
質問1>デフォルトのデストラクタはどのように見えますか?例えば 、
node::~node()
{
next = NULL;
}
Question2>我々はstruct node
かないのデストラクタを定義する必要がありますか? 私はそのようなデストラクタを明示的に提供する必要はないと仮定します。その理由は、メンバ変数next
は、指し示されたリソースを所有しておらず、weak_ptr
として振る舞います。あれは正しいですか?