猿问

c++子类析构函数未调用

为什么父类的析构函数定义成virtual后, delete pTest2 就会释放Derived的资源, 否则就只能释放Base的资源, 而delete pTest1就能释放Derived 和Base的资源

class Base{public:
    ~Base() {        cout << "Base destructor!" << endl;
    };
};class Derived: public Base
{public:
    ~Derived() {        cout << "Derived destructor!" << endl;
    };
};int main() {

    Derived *pTest1 = new Derived();
    Base *pTest2 = new Derived();    delete pTest1;    delete pTest2;    return 0;
}


湖上湖
浏览 559回答 1
1回答
随时随地看视频慕课网APP
我要回答