这句话怎么理解?

Johnny_de 2006-04-28 10:15:13
IUnknown并不是虚拟基类。IX和IY(两个接口)并不能按虚拟方式继承IUnknown,这是由于会导致与COM不兼容的vtbl。若IX和IY按虚拟方式继承IUnknown,那么IX和IY的vtbl中的头三个函数指向的将不是IUnknown的三个成员函数。

首先我觉得IUnknown本身就是个接口,里面的三个方法都是纯虚的,不存在什么类不类的问题,其次为什么IX和IY按虚拟继承方式继承IUnknown会使vtbl中头三个函数指向的将不是IUnknown的三个成员函数?IX和IY本身也是接口,应该怎么理解?
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshizei 2006-04-29
  • 打赏
  • 举报
回复
C++语言的规范中只是规定了虚函数的行为,而并没有规定他的具体实现,所以C++规范是源码级的,而不是二进制级的.所以很难做到软件的各个部分之间的相互独立.软件复用也就很困难.COM的出现就是为了给软件复用创建一个二进制的规范.但COM技术作为对已有的C++语言的增补,用不能违反C++的规范,所以他的很多地方都是很蹩脚的.你提到的问题就是其中一个.这个问题是编译器相关的,不值得深究,如果你想知道,我可以给你举个例子.
Johnny_de 2006-04-29
  • 打赏
  • 举报
回复
好失望啊,这里人都没有.
Johnny_de 2006-04-28
  • 打赏
  • 举报
回复
没人知道吗??

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧