の使用について疑問がありdelete p
ます。ほとんどのシナリオでは、何かを呼び出す場合はデストラクタ内で delete を呼び出しますint *p = new int (10);
が、以下のコード スニペット (delete p の元のコード) によると、既にデストラクタを呼び出してから演算子 delete を呼び出します。なぜデストラクタ内で delete p を呼び出す必要があるのか.
元のコード:
delete a;
if (a != NULL) {
a->~A();
operator delete(a);
}
delete を内部デストラクタと呼ぶコード スニペット
class B
{
int *a;
public:
B()
{
a=new int(90);
}
~B()
{
cout<<"B's destructor";
delete a;
}
void dial()
{
cout<<"dial the tone";
}
}