美文网首页C/C++学习笔记
2.0 C++远征:虚析构函数

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

作者: 青_阳 | 来源:发表于2016-11-18 18:32 被阅读3次

    2-4虚析构函数

    [TOC]

    1.为什么引进虚析构函数?

    使用new关键字创建一个基类指针用来调用派生类对象的时候,
    如果派生类对象在堆中new了一段内存,
    因为释放基类指针的时候不会调用派生类的析构函数,
    那么在派生类中的delete也就形同虚设,
    所以会导致内存泄漏。
    
    将基类、派生类析构函数写成虚析构函数,
    那么释放基类指针的时候也会调用派生类的虚构函数,
    派生类申请的内存也会被释放掉。
    

    多态中存在的问题:内存泄漏。
    为了解决内存泄漏的问题,引入了虚析构函数,虚析构函数就是用virtual修饰析构函数。
    析构函数:~ClassName();
    虚析构函数:virtual ~ClassName();

    2.virtual在函数中的使用限制

    (1)不能用来修饰普通函数(全局函数)

    普通函数不能是虚函数。

    (2)不能用来修饰静态成员函数

    静态成员函数不能是虚函数。

    (3)不能用来修饰内联函数

    内联函数不能是虚函数,编译器会忽略掉inline关键字,成为纯粹的虚函数。

    (4)不能用来修饰构造函数

    构造函数不能成为虚函数。

    相关文章

      网友评论

        本文标题:2.0 C++远征:虚析构函数

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