class Base
{
public:
Base(){};
virtual ~Base(){};
public:
virtual void do(){std::cout << "I do something" << std::endl;};
}
class Child : public Base
{
public:
Child (){};
~Child (){std::cout << "Child is delete" << std::endl;};
public:
virtual void do(){std::cout << "I do something" << std::endl;};
}
int main()
{
Base* pBase = new Child();
pBase->do();
delete pBase;
}
程序得到的输出是
I do something
Child is delete
如果基类的析构函数不是虚函数,输出就会变成
I do something