#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
我有這個代碼,我試圖手動刪除結構變量。這樣做,我意識到析構函數在這裏被調用兩次。這是爲什麼發生?爲什麼在調用destruct()
時不會被刪除?爲什麼析構函數在這裏被調用兩次?
從不「刪除」任何不是「新」的東西 –