对于下面的测试代码(64位系统):C类继承了A  B 均为虚类,所以在结果中sizeof(C) 结果为32

#include<iostream>

using namespace std;

class A
{
virtual void test()
{}
private:
int a;
};
class  B
{
virtual void test()
{}
float b;
};
class C:public A ,public B
{
virtual void test()
{}
static double c;     //静态成员属于类不属于对象,所以sizeof(C) 时,不计算在内

};

struct A1
{
    char a;
    int b;
    double c;
};

struct A2
{
    int b;
    double c;
    char a;
};

int main()
{
    C c;
    cout<<"int = "<<sizeof(int)<<endl;
    cout<<"int* = "<<sizeof(int*)<<endl;
    cout<<sizeof(c)<<endl;
    cout<<"A  " <<sizeof(A)<<endl;   //16
    cout<<"B="<<sizeof(B)<<endl;             //16
    cout<<"-------------"<<endl;
    cout<<sizeof(A1)<<endl;
    cout<<sizeof(A2)<<endl;
}
tianxintong@txt:~/git/shujia/RB_tree$ ./tt
int = 4
int* = 8
32  
A  16
B=16 
-------------
16
24

分析: C 类继承了A 类里有一个虚表指针和一个int,字节对齐以后就是16个字节,B类中有一个float和一个虚表指针,为16字节,而在C  类继承了其基类的相应的虚表,并进行了修改(有虚函数的重写则进行覆盖,对每一个有相应虚函数的基类都进行覆盖,这也是多态的原因,无虚函数的重写则将派生类的虚函数添加到第一个基类的虚表的后面,这种没有多态.)//

有虚继承的类其有几个虚继承的基类则该类就有几个虚表相关推荐

  1. 7-1 用虚函数计算各种图形的面积 (20分) 定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)

    7-1 用虚函数计算各种图形的面积 (20分) 定义抽象基类Shape,由它派生出五个派生类:Circle(圆形).Square(正方形).Rectangle( 长方形).Trapezoid (梯形) ...

  2. C++中派生类隐式调用与显式调用基类的构造函数

    通过派生类的构造函数调用基类的构造函数有两种方式,隐式和显式两种. 所谓隐式方式就是在派生类的构造函数中不指定对应的基类的构造函数,这个时候调用的是基类的默认构造函数(即含有默认参数值或不带参数的构造 ...

  3. asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件...

    public class BasePage:Page protected override void OnPreLoad(EventArgs e) {      base.OnPreLoad(e); ...

  4. java 单例基类_PHP基于单例模式实现的数据库操作基类

    本文实例讲述了PHP基于单例模式实现的数据库操作基类.分享给大家供大家参考,具体如下: 配置文件: $db = array( 'host'=>'localhost', 'user'=>'r ...

  5. android mvp框架基类,Android MVP架构项目搭建封装,基类封装

    综述 对于MVP (Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的.而对于Android应用的开发中本身可视为一种MVC架构 ...

  6. 31.基类的公有成员在派生类中的访问权限由 决定.java_基类的公有成员在派生类中的访问权限由派生方式决定。()...

    金属弯曲试验用以检验金属承受规定弯曲程度为__性能,并显示其__. 莫尔法测定Cl-含量时,要求介质的pH值在6.5~10范围内,若酸度过高则 取标示量为25mg的盐酸氯丙嗪片20片,除去糖衣后精密称 ...

  7. C++中的虚继承与虚基类

    1.Cpp中的虚继承与虚基类 在多继承时,很容易产生命名冲突的问题,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类A派 ...

  8. C++虚继承和虚基类详解(二)

    虚继承(Virtual Inheritance) 为了解决多继承时的命名冲突和冗余数据问题,C++ 提出了虚继承,使得在派生类中只保留一份间接基类的成员. 在继承方式前面加上 virtual 关键字就 ...

  9. 多重继承、虚继承与虚基类

    一.多重继承 单重继承--一个派生类最多只能有一个基类 多重继承--一个派生类可以有多个基类 class 类名: 继承方式 基类1,继承方式 基类2,-. {-.}; 派生类同时继承多个基类的成员,更 ...

  10. C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响

    继承作为面向对象编程的一种基本特征,其使用频率非常高.而继承包含了虚拟继承和普通继承,在可见性上分为public.protected.private.可见性继承比较简单,而虚拟继承对学习c++的难度较 ...

最新文章

  1. LeetCode简单题之打折购买糖果的最小开销
  2. 超简单的网页选项卡---jQuery
  3. python能做什么游戏ll-Python 应该怎么学?
  4. 机器学习--线性代数基础
  5. 【CentOS7-Python系列】之一【VMwareWorkstation安装CentOS7】
  6. Maven下Flex国际化配置
  7. 理解搜索引擎并且善用google
  8. 聚合数据接口,提供开放API
  9. post请求需要加密吗_你需要吗?这款闪存盘不仅可以专业加密,还能云备份
  10. amazon s3_在Amazon S3上托管静态网站
  11. centos下编译安装Openssl
  12. 前端-CSS,语法、元素、属性、动画、计算方法布局及简单实战项目
  13. 中文版Ubuntu系统转为英文版Ubuntu
  14. 硬盘和显卡的访问与控制
  15. 类加载(基本说明、流程图、类加载各个阶段完成的任务)
  16. jvm优化_在JVM中记录世界停顿
  17. 阿里云导出负载均衡SLB实例数据
  18. 202011 网络是通的,数据发不过去(接受不到)
  19. android qq空间相册,QQ空间Android3.3发布 新增空间、相册权限设置
  20. c语言数论应用有关题目,中学数学中及初等数论相关的几个问题.docx

热门文章

  1. 各种品牌主板、笔记本、台式一体机的U盘启动热键一览表
  2. RGB,YUV的来历及其相互转换
  3. 5G NR空口物理层主要参数解读
  4. 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗
  5. 几种绳子打结的方法 - T爸写给小T的书
  6. c语言编程入门题库,级程序设计基础题库(c语言)(..更新).doc
  7. 2021年上海互联网公司非官方排名
  8. n维椭球体积公式_物质的量浓度计算公式都有什么?
  9. phpexcel删除行_在PHPexcel中删除空行
  10. 利用Node-js搭建前端自动化平台