#include <iostream>
#include <string>
using namespace std;
class Base
{
public:
Base()
{
cout << "Base()" << endl;
func();
}
virtual void func()
{
cout << "Base::func()" << endl;
}
virtual ~Base()
{
func();
cout << "~Base()" << endl;
}
};
class Derived : public Base
{
public:
Derived()
{
cout << "Derived()" << endl;
func();
}
virtual void func()
{
cout << "Derived::func()" << endl;
}
virtual ~Derived()
{
func();
cout << "~Derived()" << endl;
}
};
void test()
{
Derived d;
}
int main()
{
// 栈空间
test();
// 堆空间
//Base* p = new Derived();
//delete p; // 多态发生 (指针 p 指向子类对象, 并且又有虚函数重写)
return 0;
}
/*
Base()
Base::func()
Derived()
Derived::func()
Derived::func()
~Derived()
Base::func()
~Base()
*/
来源: https://www.cnblogs.com/nbk-zyc/p/12274178.html