COM的IUnknow 接口的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 16:58:20
COM里有个问题一直不明白,IUnknow这个类是微软自己实现的,假如我在后面派生一个接口IX,实现查找接口的函数QueryInterface,假如接口的ID什么都定义了,当我定义一个IUnknow指针Iunknow *PI的时候用PI->QueryInterface函数为什么能找到IX这个接口?如果按多态性PI->QueryInterface应该是微软定义的那个函数,怎么能找得到IX这个接口的呢?这个COM的性质不明白。。
PI定义的是一个IUnknow指针,就是因为是一个IUnknow指针,并且没有把IX指针赋给PI,书上是这样写的,定义一个IUnknow *PI指针,后面紧接写PI->QueryInterface(),然后说这个函数能找到所有接口,我就奇怪。

你的PI指针是指向子类的对象吗?

因为IUnknown是一个抽象基类,它里面的QueryInterface函数也是纯虚函数,所以根据多态性,使用子类对象地址初始化的基类指针去访问QueryInterface函数访问的是子类的函数。

抽象基类指针就是用来访问子类数据和函数的,但我觉得应该用子类对象的地址去初始化基类指针才能达到这种效果吧。