zoukankan      html  css  js  c++  java
  • 34、构造函数能否声明为虚函数或者纯虚函数,析构函数呢?

    构造函数:

    1.构造函数不能定义为虚函数。在构造函数中可以调用虚函数,不过此时调用的是正在构造的类中的 虚函数,而不是子类的虚函数,因为此时子类尚未构造好。

    2.虚函数对应一个vtable(虚函数表),类中存储一个vptr指向这个vtable。如果构造函数是虚函数, 就需要通过vtable调用,可是对象没有初始化就没有vptr,无法找到vtable,所以构造函数不能是 虚函数。

    析构函数:

    1.析构函数可以为虚函数,并且一般情况下基类析构函数要定义为虚函数。

    2.只有在基类析构函数定义为虚函数时,调用操作符delete销毁指向对象的基类指针时,才能准确调 用派生类的析构函数(从该级向上按序调用虚函数),才能准确销毁数据。

    3.析构函数可以是纯虚函数,含有纯虚函数的类是抽象类,此时不能被实例化。但派生类中可以根据 自身需求重新改写基类中的纯虚函数。

  • 相关阅读:
    H3C-路由器密码恢复
    H3C-交换机密码恢复
    H3C-端口镜像
    [洛谷P4234]最小差值生成树
    [BZOJ4003]城池攻占
    [BZOJ1058]报表统计
    [BZOJ1584]Cleaning Up 打扫卫生
    [BZOJ3733]Iloczyn
    [HDU5709]Claris Loves Painting
    [BZOJ5109]大吉大利,晚上吃鸡!
  • 原文地址:https://www.cnblogs.com/crbhf/p/14923352.html
Copyright © 2011-2022 走看看