• C++析构函数可虚性探究


    C++虚析构函数

    析构函数是用来释放对象所申请的资源的函数。 当类内没有自定义的析构函数时,系统会自动调用默认的析构函数。

    那么析构函数能否为虚函数呢?

    虚函数的意义在于实现“多态性”。即:不同的个体(派生类),实行(运行)不同的方法或策略。这样说来,析构函数本就可以是“虚”的。

    那么,虚的析构函数的意义在哪里呢?

    当一个类是既无父类又无派生类时,姑且称他为“孤独类”吧!并没有什么影响,编译器也不会报错。demo见下图例子:

    但是,当此类为基类且存在基类指针指向派生类对象时,就要多加注意了!我们知道,虚函数是动态绑定,即运行时多态。析构时,子类先调用自己的析构函数,再调用父类的析构函数。

    当父类(基类)的析构函数不为虚时,发生静态绑定,即编译时,指针绑定为父类指针,调用析构函数时,就只调用基类析构函数,子类(派生类)的析构函数不会被调用,会发生内存泄漏!!!

    (这里就不上效果图了,大致就是,不断调用父类析构函数,内存泄漏了......)

    结论

    C++函数析构函数可以为虚

    基类切记考虑虚析构函数

  • 相关阅读:
    Java基础面试题总结-编程题总结
    Linux下mysql的安装与卸载并且连接navicat详解(亲测可用)
    linux 下安装redis
    linux 下安装tomcat
    Linux系统下安装jdk及环境配置(两种方法)
    Servlet概述
    多线程之volatile关键字
    多线程之ThreadLocal
    多线程之synchronized实现原理
    线程池2
  • 原文地址:https://www.cnblogs.com/yocichen/p/10371640.html
Copyright © 2020-2023  润新知