Logstash 跨域 ruby jestjs ios5 base64 vue开发 河南网络推广 web前端开发实战项目 jquery多个元素绑定同一个事件 如何升级python java使用redis matlab不等于怎么表示 docker启动容器 kubernetes视频教程 mysql函数 mysql 连接 python算法 python下载安装教程 python实战 java字符串格式化 java对象是什么 java网络编程实例 行业软件下载 网络适配器驱动 subprocess 制作字幕的软件 dnf男柔道加点 英雄联盟崩溃 显示器面板类型 steam怎么卸载 linux定时任务 vue路由跳转 小票打印 cdr字体加粗 松下plc编程软件 淘宝抽奖活动 qq制作网页 ps祛痘 语音转文字转换器
当前位置: 首页 > 学习教程  > 编程语言

虚函数表的一些性质补充

2020/11/4 13:58:15 文章标签:

虚函数表的一些性质补充 基础性的建议去这里学习,讲的很详细 由于有些东西有些疑问,自己写了代码观察了一下结果,如有错误不严谨,欢迎指正。 class Base {int int_base; public:virtual void base_f1() {}; };class Derived1 :…

虚函数表的一些性质补充

基础性的建议去这里学习,讲的很详细

由于有些东西有些疑问,自己写了代码观察了一下结果,如有错误不严谨,欢迎指正。

class Base {
    int int_base;
public:
    virtual void base_f1() {};
};

class Derived1 : public Base {
    int int_dirived1;
public:
    virtual void base_f1() {};

    virtual void direived1_f1() { cout << "派生类1独有func1()" << endl; };
};

class Derived2 : public Base {
    int int_dirived2;
public:
    virtual void base_f1() {};

    virtual void direived2_f1() { cout << "派生类2独有func1()" << endl; };

};

1.每个类都有自己的虚函数表;

即使派生类对其继承的虚函数重写了,但基类对象的[虚函数表]中的虚函数仍然不变。

    Base b1;
    Derived1 d1;
    //查看b1的虚函数表,发现仍然存储的是Base::base_f1()
    //查看d1的虚函数表,发现存储的变为Derived::base_f1()

2.多个不同的派生类重写了同一个基类的虚函数,基类的虚函数表存储的虚函数并不会改变;

也可由(1.) 推测出来,即派生类中重写的虚函数并不会影响基类的虚函数。也进一步说明:某个类动态绑定完成后(虚函数表构建完成后),其虚函数表不会再改变。

    Base b1;
    Derived1 d1;
    Derived2 d2;
    Base b2;
    //查看b1的虚函数表,发现仍然存储的是Base::base_f1()
    //查看d1的虚函数表,发现存储的变为Derived1::base_f1()
    //查看d2的虚函数表,发现存储变为Derived2::base_f1()
    //查看b2的虚函数表,发现仍然存储的是Base::base_f1()	

本文链接: http://www.dtmao.cc/news_show_350041.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?