#include <iostream>
using namespace std;
class Base {
public:
virtual ~Base() {
cout << "~Base1()\n";
f();
}
virtual void f() { cout << "Base::f()\n"; }
virtual void g(){f();}
void g1(){f();}
void f1() { cout << "Base::f1()\n"; }
virtual void h(){f1();}
void h1(){f1();}
};
class Derived : public Base {
public:
~Derived() { cout << "~Derived()\n";}
void f() { cout << "Derived::f()\n"; }
void g(){f();}
void g1(){f();}
void f1() { cout << "Derived::f1()\n"; }
void h(){f1();}
void h1(){f1();}
};
int main() {
Base* bp = new Derived; // Upcast
bp->g();
bp->g1();
bp->h();
bp->h1();
delete bp;
} ///:~
输出结果为:
析构函数中,只有成员函数的本地版本被调用,虚机制被忽略。