继承(五)
来源:互联网 发布:seo一专员 编辑:程序博客网 时间:2024/06/15 05:00
1.类/对象大小计算
(1)结构体对齐原则
(2)与数据成员有关,与成员函数无关
(3)与静态数据成员无关
(4)虚继承对类的大小的影响
(5)虚函数对类的大小的影响
2.虚基类表
(1)virtual base table
[1]本类地址与虚基类表指针地址的差
[2]虚基类地址与虚基类表指针地址的差
(2)virtual base table pointer(vbptr)
#include <iostream>using namespace std;class BB {public:int bb_;};class B1 : virtual public BB {public:int b1_;};class B2 : virtual public BB {public:int b2_;};class DD : public B1, public B2 {public:int dd_;};int main() {cout << "BB= " << sizeof(BB) << endl;cout << "B1= " << sizeof(B1) << endl;cout << "DD= " << sizeof(DD) << endl;B1 b1;long** p;cout << "&b1= " << &b1 << endl;cout << "&b1.bb_= " << &b1.bb_ << endl;cout << "&b1.b1_= " << &b1.b1_ << endl;p = (long**)&b1;cout << p[0][0] << endl;cout << p[0][1] << endl;DD dd;cout << "&dd= " << &dd << endl;cout << "&dd.bb_= " << &dd.bb_ << endl;cout << "&dd.b1_= " << &dd.b1_ << endl;cout << "&dd.b2_= " << &dd.b2_ << endl;p = (long**)ⅆcout << p[0][0] << endl;cout << p[0][1] << endl;cout << p[2][0] << endl;cout << p[2][1] << endl;cout << sizeof(long*) << endl;cout << sizeof(long) << endl;BB* pp;pp = ⅆcout << pp->bb_ << endl; // 通过间接访问,这需要运行时的支持return 0;}
阅读全文
1 0
- Java(五)继承
- 33 继承(五)
- JS(五)继承
- 继承(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- JavaScript继承详解(五)
- Java--基础(五)继承
- 漫谈继承技术(五)
- JavaScript继承详解(五)
- 别样JAVA学习(五)继承上(0.0)继承概述
- HYSBZ 1831 逆序对
- linux编程之日志服务与日志编程
- 云打印服务器
- Cygwin 命令行包管理
- window对象
- 继承(五)
- MySQL Internals Manual翻译
- B. 这是数学题还是字符串题呢?
- 数据压缩 JPEG解码
- 面试热题——任意进制(32进制及以下)之间的转换
- 卸载vs2013(踩坑)
- jdk, python2&3切换
- Spring MVC Controller的线程安全
- SSM(spring-springmvc-mybatis)整合开发xml配置文件内容springmvc-config.xml,application.xml,web.xml