C++多态使用场景,虚析构函数的运用

下面通过一个父类的指针,去释放一个子类的对象.

//
//  main.cpp
//  C++虚析构函数
//
//  Created by 扆佳梁 on 16/8/2.
//  Copyright © 2016年 Eric. All rights reserved.
//

#include <iostream>
#include "string.h"
using namespace std;
class A{
public:
    A(){
        cout<<"A()"<<endl;
        p = new char[20];
        strcpy(p, "aaaaaaa");
        
    }
    virtual ~A(){
        cout<<"~A()"<<endl;
        delete [] p;
    }
private:
    char *p;
};

class B: public A{
public:
    B(){
        cout<<"B()"<<endl;
        p = new char[20];
        strcpy(p, "bbbbbbb");
    }
    ~B(){
        cout<<"~B()"<<endl;
        delete [] p;

    }
private:
    char *p;
};
class C : public B{
public:
    C(){
        cout<<"C()"<<endl;
        p = new char[20];
        strcpy(p, "cccccc");
    }
    ~C(){
        cout<<"~C()"<<endl;
        delete [] p;
    }
private:
    char *p;
};


void deleteA(A* a){
    delete a;
}



int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    
    C *c  = new C();
    deleteA(c);
    
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容