COM(个人笔记)IUnknown接口

COM对象必须具备的两大特性:多接口(QueryInterface),引用计数(AddRef   and  Release)。

由于COM对象都必须实现这三个函数,所以COM定义了一个标准接口IUnknown:

class IUnknown

{

public:

 virtual HRESULT QueryIterface(RIID riid,void**ppObj)=0;

 virtual ULONG AddRef()=0;

 virtual ULONG Release()=0;

};

 

对象可以通过从IUnknown派生实现这三个函数,即:由一个抽象基类派生另一个抽象基类。

例如:

class IDB:public IUnknown

{

public:

 virtual HRESULT Read (short nTable,short nRow,LPWSTR lpszData)=0;

(...)

};

这种方法很简单的将两个vtable合二为一;IDB包含所有IUnknown的函数;IDB的vtable的前三个函数就是IUnknown中的前三个函数。

另一种实现方法是将函数添加到自己的接口处:

 

class IDB{

public:

virtual HRESULT QueryInterface(RIID riid,void ** Obj)=0;

virtual ULONG AddRef()=0;

virtual ULONG Release()=0;

 virtual HRESULT Read (short nTable,short nRow,LPWSTR lpszData)=0;

(...)

};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值