1

保持成员变量指针对 COM 对象的引用并在 C++ 中的整个类中重用引用是否有任何问题。

是否有人知道每次您想要使用 COM 对象时您想要调用 .CreateInstance 的原因,即您每次都获得一个新实例。

我看不出你有什么理由要这样做,

谢谢,

(否是可以接受的答案!!!)

4

3 回答 3

5

这取决于你真正想要什么。

如果每次都需要相同的对象,则必须保留指向它的指针。如果您每次都需要一个新对象(无论出于何种原因),您必须每次都创建一个新实例。如果您不在乎保留该对象是可取的,因为调用CoCreateInstance()相对昂贵。

于 2010-04-20T11:32:16.997 回答
2

我想说这取决于 COM 对象是什么以及您如何使用它。重用 ADO 连接通常没问题,但如果将其置于脏状态,则重用它时可能会遇到奇怪的行为。某些 COM 对象可能具有重新初始化或清除方法,您可以调用这些方法将它们重置回干净状态。

于 2010-04-20T11:34:18.367 回答
2

在这种情况下没有一般规则,因为有许多变量决定它是否是一个好主意。

第一:如果您拥有相关的 COM 对象,即拥有源代码并控制它们的使用方式,那么是的,它非常安全。

如果 COM 对象是第 3 方 COM 对象,有时它们中的蹩脚代码可能会迫使您每次使用它们时都在它们上“创建实例”——出于必要(和自我保护)。

如果 COM 对象充当代理对象,您可能需要在每次使用它们时创建它们,因为幕后的东西,即其他客户端使用相同的对象。

还有更多情况,但总结一下:这取决于...

于 2010-04-20T11:52:03.057 回答