我正在研究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