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

    (1)

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

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

    (2)

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

     

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

    (3)

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

    (4)

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

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

     

  • 相关阅读:
    HTML5存储
    HTML5全局属性和事件
    HTML5媒体(音频/视频)
    HTML5标签canvas制作动画
    HTML5标签canvas图像处理
    开发kendo-ui弹窗组件
    HTML5标签canvas制作平面图
    javascript匿名函数
    Javascript富文本编辑器
    快速排序算法(python版本)
  • 原文地址:https://www.cnblogs.com/encode/p/3664668.html
Copyright © 2011-2022 走看看