1
我想破壞類B
的對象。從C++中的虛析構函數調用虛擬方法
class A {
public:
A() {
std::cout << "construct A" << av::endl;
a = new int;
}
virtual ~A() {
std::cout << "destruct A" << av::endl;
this->clear();
}
virtual void clear() {
std::cout << "clear A" << av::endl;
delete a;
}
protected:
int *a;
};
class B : public A {
public:
B() {
std::cout << "construct B" << av::endl;
b = new int;
}
~B() {
std::cout << "destruct B" << av::endl;
}
void clear() override {
std::cout << "clear B" << av::endl;
delete b;
delete this->a;
}
private:
int *b;
};
我想用clear()
方法完成。但是,當我執行下面的代碼:
A *a = new B();
delete a;
我得到:
構建構建體B自毀乙破壞清晰的一個
而且clear B
從不打印。 我在做什麼錯?
感謝提到「有效的C++」,我想它的時間讓我再次運行它。 – StahlRat