请教一个IUnknown的低级问题。

ietear 2003-10-17 01:40:54
大家知道win32中IUnknown定义如下:
interface IUknown
{
virtual HRESULT _stdcall QueryInterface(const IID& IID,void** ppv) =0;
virtual ULONG _stdcall AddRef() = 0;
virtual ULONG _stdcall Release = 0;
};

可是在“com技术内幕”p31页中明确指出:
IUnknown并不是虚拟基类,不能被虚拟继承,否则会导致与com不兼容的vtbl.

那位高手帮忙详细解释一下上面的描述,多谢!
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ietear 2003-10-18
  • 打赏
  • 举报
回复
我第一次登录论坛,各位xdjm帮帮忙解释详细点啊,多谢了:)郁闷中......
ietear 2003-10-18
  • 打赏
  • 举报
回复
我明白了:)虚拟基类、虚拟继承是一种共享机制,可是虚拟派生类的vtbl格式和com规范不符。
honghaozi 2003-10-17
  • 打赏
  • 举报
回复
“IUnknown并不是虚拟基类,不能被虚拟继承”指的是继承接口的时候可见性是public。
“virtual....=0”的意思是这个函数是抽象的,继承接口的类有义务提供实现。
ietear 2003-10-17
  • 打赏
  • 举报
回复
IUnknown的成员函数都是纯虚函数,为什么说IUnknown不是虚拟基类,虚拟基类和抽象基类含义不一样?

3,245

社区成员

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

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