C++多態(tài)使用場(chǎng)景,虛析構(gòu)函數(shù)的運(yùn)用

下面通過一個(gè)父類的指針,去釋放一個(gè)子類的對(duì)象.

//
//  main.cpp
//  C++虛析構(gòu)函數(shù)
//
//  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;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容