COM对象可以继承吗?

时间:2010-09-06 08:37:03

标签: inheritance com

COM对象是否可以继承?

我想说我想改进一些方法。

2 个答案:

答案 0 :(得分:4)

您可以在COM中使用聚合实现此功能。

基本上,您创建一个实现某些接口的对象,并包装对内部对象的访问。

您通过调用CoCreateInstance创建的内部对象,并将您自己的对象IUnknown作为pUnkOuter参数传递。

如果内部对象(正确地)支持它,它将推迟对外部对象的所有接口调用,为您的对象提供第一次提供任何接口的机会。


请注意,很少有COM对象实际上支持聚合 - 因为实现支持是(a)很难做到正确,并且(b)在编写代码以满足某些直接需求(涵盖大部分内容)的任何开发模型中都难以证明其合理性当前的流行语负载开发方法) - 遗憾的是,我认为大多数com对象(在最好的情况下)会以E_NOTSUPPORTED响应,或者(在最坏的情况下)有一半测试尝试作为聚合支持,主要导致无限递归它以非平凡的方式使用。

如果您确实找到了具有开箱即用聚合支持的com对象,那么您应该在彩票上使用该运气。 :P

答案 1 :(得分:1)

接口可以继承其他接口,但是除了组合之外,组件无法覆盖另一个组件,即将其他方法转发到组合组件,然后直接实现“重写”方法。