C++的虚析构函数

#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()

猜你喜欢

转载自blog.csdn.net/k3108001263/article/details/84635030