C++虚继承和多重继承时的指针类型转换
来源:互联网 发布:micropython 单片机 编辑:程序博客网 时间:2024/06/14 08:33
虚继承会导致子类的大小增加4个字节(VS2008编译器),即使子类没有任何新成员。虚继承加上多重继承,同样又会导致增加4个字节。看下面的示例代码:
class WndPtr{public:int handle;};class IWnd : public virtual WndPtr{;};class ListBoxPtr : public virtual WndPtr{;};class ICtrl : public IWnd{;};class ListBox : public ICtrl,public ListBoxPtr{;};
sizeof(WndPtr) = 4
sizeof(IWnd) = 8
sizeof(ListBoxPtr) = 8
sizeof(ICtrl) = 8
sizeof(ListBox) = 12
不知道是不是为了避免错误的类型转换。比如:如果ICtrl和ListBox大小一样,那么这个两个类型指针就可以自由转换,但是ICtrl并不包含ListBoxPtr的函数和成员,这种转换是不允许的。如果强制转换,虽然ListBoxPtr的handle其实就是ICtrl的handle,但是调试模式下,无法查看ListBoxPtr的成员。
- C++虚继承和多重继承时的指针类型转换
- C++多重继承下的指针类型转换
- C++:在多重继承时的指针转换问题
- 多重继承时的指针转换偏移
- 多重继承时的指针转换偏移
- C++多重继承下的指针类型转换
- C++多重继承下的指针类型转换
- C++多重继承下的指针类型转换 图解
- C++多重继承下的指针类型转换
- C++多重继承下的指针类型转换
- C++【多重继承和虚继承】
- 多重继承的虚函数表与类型转换
- C++在多重继承下的指针类型强制类型转换的一些问题
- 多重继承及类型转换
- 多重继承及类型转换
- 多重继承与类型转换 -- 虚基类多继承
- 多重继承和虚继承
- 多重继承和虚继承
- TeX简介
- 菜鸟关于网页数据库的增删改查
- Android Media (Audio) Framework Analyse
- RIM fully committed to the consumer market
- Oracle 表空间利用率及对象大小查询
- C++虚继承和多重继承时的指针类型转换
- 关于MyEclipse在载入CVS中的工程后,工程无法运行的解决
- C#求字符串中第一个只出现一次的字符
- SOHO中国董事长潘石屹的昨天今天和明天
- web service session
- JQuery DataGrid 中文文档
- 关于c++检测内存泄露相关知识(windows程序调试)
- Lamp apache 提示You don't have permission to access /x.css on this server.如何解决
- Eclipse 如何获取工程的句柄及名字