[C++对象模型][9]虚继承与虚函数表
2009-03-01 19:35
330 查看
一 虚继承
1) 代码:
void TestDynamicCast()
{
B *pB = new GD();
GD *pGD = dynamic_cast<GD*>(pB);
cout << "GD:" << pGD << endl;
D1 *pD1 = dynamic_cast<D1*>(pB);
cout << "D1:" << pD1 << endl;
D2 *pD2 = dynamic_cast<D2*>(pB);
cout << "D2:" << pD2 << endl;
cout << "B:" << pB << endl;
}
2)验证代码结果:
3)总结:
还是从内存布局来看dynamic_cast时地址的变化,第一个基类的地址与子类相同,其他的基类和虚基类需要做偏移。
三 完!
1) 代码:
void TestDynamicCast()
{
B *pB = new GD();
GD *pGD = dynamic_cast<GD*>(pB);
cout << "GD:" << pGD << endl;
D1 *pD1 = dynamic_cast<D1*>(pB);
cout << "D1:" << pD1 << endl;
D2 *pD2 = dynamic_cast<D2*>(pB);
cout << "D2:" << pD2 << endl;
cout << "B:" << pB << endl;
}
2)验证代码结果:
3)总结:
还是从内存布局来看dynamic_cast时地址的变化,第一个基类的地址与子类相同,其他的基类和虚基类需要做偏移。
三 完!
相关文章推荐
- [C++对象模型][8]多重继承与虚函数表
- 探索C++对象模型之 多重继承与虚函数表
- C++对象模型 多重继承与虚函数表
- C++对象内存模型(高级)—多重继承与虚函数表(转)
- [C++对象模型][7]单继承与虚函数表
- C++对象模型 多重继承与虚函数表
- [C++对象模型][8]多重继承与虚函数表
- [C++对象模型][8]多重继承与虚函数表
- [C++对象模型][9]虚继承与虚函数表
- C++对象模型 多重继承与虚函数表
- C++对象模型 多重继承与虚函数表
- [C++对象模型][9]虚继承与虚函数表
- [C++对象模型][8]多重继承与虚函数表
- [C++对象模型][7]单继承与虚函数表
- 从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数、C++对象模型图
- C++多重继承和虚拟继承对象模型、效率分析
- 深度探索C++对象模型--继承与Data Member
- C++对象模型——"无继承"情况下的对象构造(第五章)
- C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- c++中各类继承下的对象模型