#include <iostream>
struct ABC{
int A;
ABC(int i = 1) : A(i) {}
~ABC() {
std::cout << A << std::endl;
}
void destruct() {
delete this;
}
};
int main() {
ABC A1(2);
A1.destruct();
return 0;
}
Output:
2
2
私は構造変数を手動で削除しようとしているこのコードを持っています。そうすることで、デストラクタがここで2回呼び出されることに気付きました。なぜこうなった? destruct()
を呼び出すと、なぜそれが削除されないのですか?デストラクタがここで2回呼び出されるのはなぜですか?
「新しい」ではないものを「削除」しない –