天天看點

C++抽象基類的虛析構聲明

struct IRing

{

    virtual ~IRing(){};    

    virtual void printTable() = 0;

    virtual int add(int a,int b) = 0;

    virtual int mul(int a,int b) = 0;

    virtual int size() = 0;       

};

M2r::~M2r(){

#if 1

    int ID=IdRing(this);

    printf("R%d_%d: %s\n",size(),ID,__FUNCTION__);    

#endif    

    if(m_flag==1 && m_r!=NULL){

        delete m_r;

        m_r=NULL;

    }    

}   

int main()

    M2r* r4_7=new M2r();

    r4_7->initG(2);

    IRing* r=r4_7;

    delete r;// 如果抽象基類沒有加上虛析構聲明,那麼M2r對象沒有析構,

    //delete r4_7;//M2r對象析構了

    return 0;   

}

D:\MathTool\gaptool>IRing

R4_7: M2r::~M2r