基类和派生类的地址和布局
来源:互联网 发布:数据部门团建出行标语 编辑:程序博客网 时间:2024/06/06 19:35
#include <iostream>
using namepsace std;
class A
{
int m_nA;
};
class B
{
int m_nB;
};
class C:public A,public B
{
int m_nC;
};
int main()
{
C * pC = new C;
B * pB = dynamic_cast<B*>(pC);
A * pA = dynamic_cast<A*>(pC);
if(pC == pB)
{
cout << "equal" << endl;
}
else
{
cout << "not equal" << endl;
}
if(int(pC) == int(pB))
{
cout << "equal" << endl;
}
else
{
cout << "not equal" << endl;
}
return 0;
}
这是《程序员面试宝典》里的一道题,问你输出什么
分析:从int main下面开始逐句分析,首先定义一个对象指针pC指向一个按类C结构初始化后的空间。同时定义父类指针pB和pC并使他们获得在pC指向的空间自己的首地址,此时假设pC指向的对象地址为0x3d3dd8,由于B是C的父类,因此pB并不知道pC所有的成员,所以pB指向的那段空间应该是C从B继承的那个成员首地址开始,0x3d3ddC。但是pB == pC在比较时发生隐式转换,少空间向多空间扩展,即(C *)pB == pC,两者相等,输出equal,同理。由于第二个强化类型转换,所以是not equal
阅读全文
0 0
- 基类和派生类的地址和布局
- 代码分析基类和派生类的地址和布局的问题
- 基类和派生类的地址问题
- 派生和基类
- 派生类和基类的关系
- 基类和派生类的关系
- 类的继承和派生
- 类的继承和派生
- 类的继承和派生
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 基类和派生类
- 虚拟单一继承下基类和派生类起始地址不同
- jeecg平台 一对多代码生成器使用
- 高下配百元周全屏
- == 与equals 的区别
- Nginx 配置 WebSocket
- OC写的一个关于月份的选择弹窗
- 基类和派生类的地址和布局
- Maven--(1)
- 文章标题
- 3.1.struts.xml中package的namespace属性
- 【安全牛学习笔记】python实例
- 工程物料管理信息化建设(二)——材料编码
- ip 命令 和ifconfig 命令 删除IP
- Python与数据库简单交互
- Java环境变量配置