我正在研究Windows SDK中的DirectShow示例。许多类都具有非默认构造函数。这些构造函数是如何被调用的?谁提供论据?为什么COM类需要构造函数?如何在不注册的情况下使用COM类?
我可以在没有注册的情况下在C++程序中使用这些类吗?如果是这样,我可以直接使用类构造函数。
如果我使用一个COM类未经登记什么下面的代码片段会发生:
Foo * foo = new Foo(.....); // note, not using CoCreateInstance
Bar * bar = foo->QueryInterface(...);
bar->Release();
delete foo; // CRASH?
谢谢!
你不知道在一般情况下如何实现'Release'(它甚至可能是空操作,或者使用另一个内存分配器)。在这里,它很可能会做'删除这个'。你应该使用'CoCreateInstance' +'Release',这是唯一安全的事情。 – 2012-04-06 15:49:21