美文网首页
C++多态使用场景,虚析构函数的运用

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

作者: 司马捷 | 来源:发表于2016-08-02 10:58 被阅读62次

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

//
//  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;
}

相关文章

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

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

  • 2020-02-10 C++基础2

    1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 将可能会被继承的父类的析构函数设置为虚...

  • c++面试问题总结

    1.c++面试问题总结:(1)空类的大小,仅含有虚函数类的大小(2)析构函数声明为虚函数的作用(3)C++多态的实...

  • C++ 多态性 虚函数、抽象类(二)

    注意:本文中代码均使用 Qt 开发编译环境 在C++中不能声明虚构造函数,但是可以声明虚析构函数。析构函数没有类型...

  • 12-11继承

    杂项 在c++中,使用子类指针表示父类,不强转是编译不过的。 构造和析构中不要调用虚函数,因为如果产生了多态,构造...

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

  • 2.0 C++远征:虚析构函数

    2-4虚析构函数 [TOC] 1.为什么引进虚析构函数? 多态中存在的问题:内存泄漏。为了解决内存泄漏的问题,引入...

  • 多态与虚函数

    多态与虚函数 注意 在成员函数(静态成员、构造函数和析构函数除外)中调用同类的虚函数的语句是多态的。 在构造函数和...

  • 虚析构函数的作用与理解

    基类的析构函数一般都会被声明成虚函数,原因是,若是不设置成虚函数,在实现多态时,将子类对象赋给基类指针,在析构的过...

  • 2002.C++BASE-构造函数、析构函数

    转:C++继承中构造函数、析构函数调用顺序及虚析构函数 1.构造函数 大家都知道构造函数里就可以调用成员变量,而继...

网友评论

      本文标题:C++多态使用场景,虚析构函数的运用

      本文链接:https://www.haomeiwen.com/subject/pmufsttx.html