C++中类的数据成员在内存中时如何分布的,有继承,虚拟继承等情况下又是怎么分布的?在VS编译器中可以查看。

源代码如下:

#include<iostream>
using namespace std;class CFurniture
{
public:CFurniture(){m_nPrice = 0;}~CFurniture(){printf("virtual ~CFurniture()\r\n");}virtual int GetPrice(){return m_nPrice;}
protected:int m_nPrice;
};class Csofa:virtual public CFurniture
{
public:Csofa(){m_nColor = 1;m_nColor = 2;}~Csofa(){printf("virtual ~Csofa()\r\n");}virtual int GetColor(){return m_nColor;}virtual int SitDown(){return printf("Sit Down and rest your legs\r\n");}protected:int m_nColor;
};class CBed : virtual public CFurniture
{
public:CBed(){m_nPrice = 3;m_nLength = 4;m_nWidth = 5;}~CBed(){printf("virtual ~CBed()\r\n");}virtual int GetArea(){return m_nLength*m_nWidth;}virtual int Sleep(){return printf("go to sleep\r\n");}protected:int m_nLength;int m_nWidth;
};class CSofaBed : public Csofa,public CBed
{
public:CSofaBed(){m_nHeight = 6;}~CSofaBed(){printf("virtual ~CSoftBed()\r\n");}virtual int SitDown(){return printf("Sir Down on the sofa bed\r\n");}virtual int Sleep(){return printf("go to sleep on the sofa bed\r\n");}virtual int GetHeight(){return m_nHeight;}protected:int m_nHeight;
};void main(){CSofaBed SofaBed;CFurniture* pFunniture = &SofaBed;Csofa* pSofa = &SofaBed;CBed* pBed = &SofaBed;
}

1、打开 Visual Studio Tools 中的 VS2013 开发人员命令提示

2、切换到.cpp文件所在的目录

3、输入命令:cl -d1reportSingleClassLayout[类名] [文件名].cpp

4、也可以在编辑界面中,右击[文件名].cpp->属性–>配置属性–>C/C+±->命令行:其他选项,添加:/d1reportSingleClassLayout[类名] [文件名].cpp

5、编译,会在输出栏中显示上述信息。

5、用gcc的-fdump-class-hierarchy 参数把内存布局给打印出来
-fsyntax-only 只是检查语法。
gcc -fdump-class-hierarchy -fsyntax-only CppTest.cpp
结果会在目录下生成一个CppTest.cpp.t01.class的文本文件。

vs开发人员命令查看C++类 data member 内存布局相关推荐

  1. vs2015开发人员命令提示工具 查看C++类对象模型

    VS2015 开发人员命令提示位置 在开始菜单可以输入vs2015  会出现 VS2015 开发人员命令提示 工具,打开工具. 使用命令查看C++类对象模型 cl /d1 reportSingleCl ...

  2. hadoop和hdfs命令_Hadoop 1.x和2.x HDFS基本开发人员命令,“ hadoop”命令

    hadoop和hdfs命令 In this post, we are going to discuss about Hadoop 1.x and Hadoop 2.x HDFS Basic comma ...

  3. 利用linux的df和du命令查看文件和目录的内存占用

    版权声明:本文为博主原创文章,转载请超链接注明出处.    https://blog.csdn.net/ljc1026774829/article/details/74935658 当磁盘大小超过标准 ...

  4. C++对象模型5——类对象的内存布局

    一.类对象的内存布局 1.1.单一继承的类对象布局 示例1 class base { public:int m_fai;int m_faj; }; class derive : public base ...

  5. iOS开发人员命令行上的Git版本控制

    这件事发生在我们所有人身上:我们更改了代码,突然之间,一切似乎都"坏了". 如果您知道如何使用版本控制,那么这就是福音. 在本教程中,我们将从命令行学习如何使用Git. 关于版本控 ...

  6. 作为开发人员,这四类Code Review方法你都知道吗?

    本文翻译自:https://dzone.com/articles/4-types-of-code-reviews-any-professional-developer 转载请注明出处:葡萄城官网,葡萄 ...

  7. IE11 F12 开发人员工具 查看 Cookie

    参考网址:Using the F12 developer tools in IE11 Step1 : IE11 => F12 打开 开发人员工具 Step2:开发人员工具 => 网络F5 ...

  8. c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看a,a[0],a之间的值,可变数组

    1.查看一个c函数依赖的类的方式: gcc t.c -o app 使用ldd app命令查看依赖的类,截图如下: 2.库函数包括: a.C标准库函数,(c89/c99标准定义的函数接口,由操作系统厂商 ...

  9. Linux中查看进程的虚拟地址空间内存布局

    要查看一个进程的虚拟地址空间的内存布局,需要设置阻塞.如果没有设置阻塞,当./a.out按下去后,程序执行的速度非常快以至于来不及查看,所以需要设置阻塞. #include<stdio.h> ...

最新文章

  1. QT的滚动条极简教程
  2. dos与ddos攻击原理
  3. 吴恩达 coursera AI 第一课总结+作业答案
  4. Java实现生产消费模型的5种方式
  5. window电脑查看ssh公钥,以及将自己的公钥添加到Github等类似网站
  6. #中队列的数据结构_数据结构与算法拓展(一)
  7. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型
  8. 收藏 | 人脸识别最新进展
  9. 为推广苹果音乐服务 库克再度现身北京
  10. 微课|中学生可以这样学Python(例6.1):杨辉三角形
  11. db2 常用命令(一)
  12. web安全day24:一文读懂Linux系统安装软件的几种方法
  13. 6、set_xlim、set_ylim、xticks、yticks、set_xlabels、set_ylabels 和 双坐标轴twin()
  14. sed修炼系列(二):sed武功心法(info sed翻译+注解)
  15. ubuntu14上安装ros教程
  16. 《Python数据分析与数据挖掘实战》第十五章学习——文本分析
  17. 1. 虚拟化Docker
  18. SAR舰船检测数据集总结
  19. 厚物科技PXIe机箱PXI机箱PXIe便携机HW-1693BAT
  20. Hadoop:INFO mapreduce.Job: Running job

热门文章

  1. 字符串的操作方法(第二天)
  2. Ubuntu上安装nginx步骤及问题记录
  3. 你可以去学python_你是怎么学好Python的?
  4. 【Linux 内核】Linux 内核源码目录说明 ② ( drivers 目录 | fs 目录 | include 目录 | init 目录 | ipc 目录 | kernel 目录 )
  5. 【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 )
  6. 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
  7. 【C 语言】文件操作 ( 配置文件读写 | 完整代码示例 ) ★
  8. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )
  9. 【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )
  10. 数据库面试知识点汇总