#include <iostream>
// virtual destructors are very important for when you're dealing with polymorphism.
// a base class A, a subclass B derived from A,when you want to reference class B as class A
// but it's actually class B, and then you decide to delete A, you also want the destructors
// of B to run.
//
class Base
{
public:
Base(){ std::cout << "Base Constructed\n"; }
virtual ~Base() { std::cout << "Base Destructed\n"; }
};
class Derived : public Base
{
public:
Derived() { m_array = new int[5]; std::cout << "Derived Constructed\n"; }
~Derived() { delete[] m_array; std::cout << "Derived Destructed\n"; }
private:
int* m_array;
};
int main(void)
{
Base* base = new Base();
delete base;
std::cout << "----------------" << std::endl;
Derived* derived = new Derived();
delete derived;
std::cout << "----------------" << std::endl;
Base* poly = new Derived();
delete poly;
std::cin.get();
}
【Cherno的C++视频】Virtual destructors in C++
最新推荐文章于 2024-09-16 16:07:55 发布