2016-02-05 82 views

回答

1

微软的COM是与语言无关的组件技术。甲部件是单独编译的对象,这可能驻留在不同的过程中或甚至不同的计算机上。后一种可能性被称为DCOM,简称分布式COM。

访问组件的COM方法依赖于二进制级别的内存布局,顺便说一句,早期的Visual C++布局多态对象,首先在每个对象中使用一个vtable指针。每个COM对象都来自IUnknown类,它增加了三个虚拟成员函数,即两个用于引用计数,另一个用于接口查询。这顺便也是用于Java本地接口的布局,并且它用于例如XCOM for Unixland。

的COM设计师认为,实现继承是解精,所以不是每个对象提供一个或多个不同的纯接口,虚拟方法的集合。为了获得一个指针指向一个给定的接口给定对象,在最低级别传递一个128位的统计上唯一的接口标识符到IUnknown接口的方法,对于一个接口查询。请记住,虽然COM的二进制级别布局是为C++设计的,但这种技术并不特别适合C++:它是语言不可知的,因此您必须在运行时查询接口,而不是将这些接口作为C++类型的对象。