• 深度探索C++对象模型读书笔记(1)


    看到《深度探索C++对象模型》的第64页才开始做的笔记,这要是发现书中一个疑惑的地方所以前来和大家探讨一下

        

    这是书中对C++中实现多态时内存的布局描述,其中包括两个类ZooAnimal和Bear

    class ZooAnimal

    {

      ZooAnimal()

      virtual ~ZooAnimal();

      virtual void rotate();

    protected:

      int loc;

      String name;

    };

    class Bear : public ZooAnimal

    {

      Bear();

      ~Bear();

      void Rotate();

      virtual void dance();

    portected:

      enum Dances { ... }

      Dances dances_kowm;

      int cell_block

    }

    可见Bear中只有一个虚函数表,此虚函数表在其继承层次最上层

    同时我们可以看回书中44页对多态继承C++对象模型的描述

    可以看到实现多重继承下虚函数表所在位置只与继承层次最上层的类对象有关,所有各层次中声明的虚函数都在继承层次最上层中虚函数表中可以找到。

    PS:有些人可能疑惑在编译器(至少我在vs2012中是这样的)中虚函数表怎么只能看到最上层类中声明的虚函数,实际上虽然我们看不到其他层次上声明的虚函数但它们确实是存在于虚函数表里的。

  • 相关阅读:
    fabric 网络操作中遇到的问题
    springBoot项目启动初始化数据
    行为验证码AJ-Captcha
    RestControllerAdvice注解无效问题
    记录美团一面问题
    关于springMVC
    作业08-集合
    选择排序
    Centos7 使用Minikube搭建Kubernetes集群
    Vscode 配置 Go语言插件
  • 原文地址:https://www.cnblogs.com/kirito/p/3099443.html
Copyright © 2020-2023  润新知