#include <stdio.h>
#include <string.h>
class A{
public: char *aVar;
public: A(){
aVar = new char[10];
strcpy(aVar,"hello a");
printf("new A()\n");
}
public: virtual ~A(){
delete aVar;
printf("delete A()");
}
};
class B:public A{
public: char *bVar;
public: B():A(){
bVar = new char[10];
strcpy(bVar,"hello b");
printf("new B()\n");
}
public: ~B(){
delete bVar;
printf("delete B()\n");
}
};
int main(){
B *b = new B();
A *a = b;
printf("%s\n",a->aVar);
printf("%s\n",b->bVar);
delete a;
return 0;
}
虚函数是为了区分“我是谁”,虚析构函数会先执行~B(),后执行~A()