zoukankan      html  css  js  c++  java
  • 一道经典题目虚函数继承和虚继承

    Code
    问题:程序运行的结果?
    答案:8,16,24。
    解释:
    (1)对于类A,由于有一个虚函数,那么必须得有一个对应的虚函数表来记录对应的函数入口地址。每个地址需要一个虚指针,指针的大小为4。类中还有一个char k[3],当然大小为3。为什么是8呢?因为在计算机里,是以4为单位,所以第一条输出的结果为8。
    (2)对于类B,同类A一样,自己的大小为8,但是由于虚继承类A,所以在虚表中要加入一个虚类指针来指向其类A,然后在包含类A的所有成员,sizeof(A)为8,结果便是16。
    (3)对于类C,同类B一样,自己的大小8,加上sizeof(B),结果为24。

    虚继承就是为了节约内存的,他是多重继承中的特有的概念。适用与菱形继承形式。
    虚函数继承就是覆盖。即基类中的虚函数被派生类中的同名函数所覆盖。 是实现多态的方法。
  • 相关阅读:
    Shell变量之自定义变量、环境变量
    Shell变量命名规则
    获取文件编码格式
    基于Lucene的文件检索Demo
    数据库压力测试工具
    插入ts以及判断列是否存在(支持多数据库)
    (摘)Chart属性设置
    (摘)C#comboBox绑定数据
    (摘)ORACLE DBA的职责
    (摘)DataGuard物理standby管理
  • 原文地址:https://www.cnblogs.com/wxfasdic/p/1555739.html
Copyright © 2011-2022 走看看