#include <stdio.h>
class base {
public:
base() {
f();
printf("base\n");
}
virtual void f() {
printf("base::f()\n");
}
virtual void t() {
printf("base::t()\n");
f();
}
};
class subtype:public base {
public:
subtype() {
f();
printf("subtype\n");
}
//重载父类的虚函数
virtual void f() {
printf("subtype::f()\n");
}
};
int main() {
subtype t;
t.f(); //sub::f
printf("----\n");
base b;
b.f(); //base::f
printf("----\n");
base *p_sub = new subtype();
p_sub->t();
p_sub->f(); //sub::f
printf("----\n");
base *p_base = new base();
p_base->f(); //base::f
}