2013亚马逊面试题--虚继承的内存模型分析
作者:网络转载 发布时间:[ 2013/1/18 10:46:21 ] 推荐标签:面试
前两天逛论坛的时候,看到一个有关虚继承中类的大小(亚马逊二面的面试题)帖子,看了下还真不会,觉得慢慢研究下。大概搞明白为什么了,将自己的一点结果跟大家分享下吧,欢迎拍板。(我的上一篇博客也虚继承有相关解释)
这里先从以下几个点进行说明吧:
● 虚继承和虚基类
● vs2010下的cl命令
● 内存模型
虚继承和虚基类
虚继承:在继承定义中包含了virtual关键字的继承关系;
虚基类:在虚继承体系中的通过virtual继承而来的基类,需要注意的是:class CSubClass : public virtual CBase {}; 其中CBase称之为CSubClass的虚基类,而不是说CBase是个虚基类,因为CBase还可以不不是虚继承体系中的基类。
vs2010下的cl命令
微软的VS2010提供了一个新的选项,给用户显示C++对象在内存中的布局。这个选项是:
/d1reportSingleClassLayout
具体使用方法如下,在写好相应的cpp文件之后,需要启动VS2010的命令行工具“Visual Studio 2010Command Prompt”,切换到cpp文件所在目录之后,输入如下的命令:
cl [filename].cpp /d1reportSingleClassLayout[className]
cl当然是MS的编译器;[filename].cpp是你所想要查看的class所在的cpp文件(class定义在头文件也没关系,还是只要编译cpp文件即可);而你需要在后加上[className],也是你需要查看的class的类名。
【举例】test.cpp文件代码如下:
#include <iostream>
using namespace std;
class Base
{
public:
int a;
virtual void fcn() {};
};
class Derived : public Base
{
public:
virtual void fcn2() {};
private:
int d;
void fcn3() { }
};
int main()
{
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11