zoukankan      html  css  js  c++  java
  • 虚函数和纯虚函数的区别

    (1)

    虚函数为了重载和多态的需要,在基类中是已经实现了的,即便是个空实现,所以子类中可以重写也可以不写基类中的此函数!

    纯虚函数在基类中是没有实现的,必须在子类中加以实现,很像java中的接口函数!

    (2)

    虚函数是为了继承接口和默认行为

     

    纯虚函数只是继承接口,行为必须重新定义

    (3)

    在很多情况下,基类本身直接生成对象是不合情理的,带纯虚函数的类叫抽象类,这种基类不能直接生成对象。抽象类派生的类的纯虚函数如果没有被改写,那么它的派生类还是个抽象类。

    (4)

    只有成员函数才可以是虚拟的,友元不是成员函数,因此友元不支持虚拟函数。但可以通过让友元函数调用虚拟成员函数来解决友元的虚拟问题。

    在有动态分配堆上内存的时候,析构函数若不为虚,对父类的指针调用delete时,释放不了子类中特有的部分,会内存泄露,所以析构函数必须是虚函数,但没有必要是纯虚的,析构函数应当是虚函数,将调用相应对象类型的析构函数,因此,如果指针指向的是子类对象,将调用子类的析构函数,然后自动调用基类的析构函数。

     

  • 相关阅读:
    电视盒子通过adb安装第三方应用
    采用网闸隔离的内外网如何进行数据的即时交互?
    数据结构-python-二叉树
    Python+uiautomator2写安卓手机脚本前期准备
    centos6.5离线rpm安装mysql
    centos7 nginx 启动脚本
    zabbix简单改造为免密登陆
    vue生命周期函数
    mysql 深入问题了解
    9. 回文数.py
  • 原文地址:https://www.cnblogs.com/encode/p/3664668.html
Copyright © 2011-2022 走看看