在C11或更高版本中使用COM的IUnknown接口有什么理由吗?AFAIK COM是作为一种更好的C98创建的,C11是否使COM过时?在C11之后,大多数COM代码都是遗留的,我说的对吗?
cyej8jka1#
它们是完全正交的,它们只是解决完全不同的问题。COM的IUnknown提供了一个基接口,从该接口可以发现对象实现的其他接口。C++标准库的std::unique_ptr和std::shared_ptr解决了管理对象生存期的问题,但没有提供任何机制来发现对象提供的功能。COM支持跨语言对象互操作,这是一种接口在一种语言中发布并从另一种语言使用的方法。请注意,有比std::unique_ptr和std::shared_ptr更好的COM对象 Package 器,例如ATL的CComPtr,MSVC的built-in _com_ptr_t,还有一个来自UWP的 Package 器,我忘记了它的名字。
1条答案
按热度按时间cyej8jka1#
它们是完全正交的,它们只是解决完全不同的问题。
COM的IUnknown提供了一个基接口,从该接口可以发现对象实现的其他接口。
C++标准库的std::unique_ptr和std::shared_ptr解决了管理对象生存期的问题,但没有提供任何机制来发现对象提供的功能。COM支持跨语言对象互操作,这是一种接口在一种语言中发布并从另一种语言使用的方法。
请注意,有比std::unique_ptr和std::shared_ptr更好的COM对象 Package 器,例如ATL的CComPtr,MSVC的built-in _com_ptr_t,还有一个来自UWP的 Package 器,我忘记了它的名字。