私はクラスを持っている:C++デストラクタが呼び出されませんでしたか?
class Rectangle {
int width;
int height;
public:
Rectangle(int w, int h) {
width = w;
height = h;
cout << "Constructing " << width << " by " << height << " rectangle.\n";
}
~Rectangle() {
cout << "Destructing " << width << " by " << height << " rectangle.\n";
}
int area() {
return width * height;
}
};
int main()
{
Rectangle *p;
try {
p = new Rectangle(10, 8);
} catch (bad_alloc xa) {
cout << "Allocation Failure\n";
return 1;
}
cout << "Area is " << p->area();
delete p;
return 0;
}
これは非常にシンプルなC++サンプルです。私はLinux g ++でコンパイルして実行します。 は突然、私は"Destructing " << width << " by " << height << " rectangle."
のような文字列が表示されるはず ...)delete p
は〜長方形(呼び出していませんでしたが、私は....
しなかったが、なぜ? オブジェクトを削除すると、そのオブジェクトのデストラクタを呼び出す必要がありますか?
デストラクタのコードとそれを実際に呼び出すコードを投稿できますか? –
'delete'が呼び出される前に最後に出力されたメッセージは、改行で終了しません。デストラクターメッセージが 'Area is 80'に連結される可能性があります。あなたはそれを見逃している可能性があります。 –
[それは](http://ideone.com/2fTkV)コードを表示する**あなたは**コンパイルして実行しました。 –