-1

是否有任何理由或约定不将 COM 对象作为对内部函数的引用传递?

我知道不能在 COM API 中使用引用,因为这会破坏二进制兼容性。但是在一个模块内呢?

4

2 回答 2

1

通过引用非 COM 函数来传递 COM 对象是完全可以的。尽管引用只是对象的别名,但它们通常在底层实现为指针。

于 2013-06-21T22:14:04.257 回答
1

这个问题很可疑,对象和接口之间的区别在 COM 中很重要。使用 COM 服务器的客户端代码只能使用接口指针。CoCreateInstance()在服务器上创建一个对象,并返回一个接口指针,指向由 coclass 实现的接口之一。像我未知*。你从来没有处理过一个物体。样板文件是将接口指针保留为指针,并通过引用传递它们并不是很有用。您可以将它们包装在智能指针类中,这样 Release() 调用是自动的。通过引用传递该智能指针对象很好,它与 COM 没有任何关系。

在 COM 服务器中可能会有所不同。您通常使用实现 COM 接口的 C++ 类在那里实现一个对象。如果该服务器中的代码需要对该对象的引用,那么只传递对 C++ 对象的引用是有意义的。这只是 C++ 中引用的标准用法,与 COM 没有任何关系。

于 2013-06-21T22:43:43.677 回答