什么C ++标准更好的COM?

时间:2016-03-09 21:20:33

标签: c++ standards

我看到了这样的答案:

  

COM是一种自己的技术。它满足了一些特殊需求   违反了许多良好的工程原则。例如,固体。标准   有比使用COM更好的方法。 - mkaes

知道什么是“更好的方式”非常有趣?

我们在项目IUnknown基类中使用,但不是COM技术本身。 IUnknown允许我们:

  1. 有很好的指定接口抽象类;
  2. 使用其add()/ release()作为侵入式智能ptrs的基础;
  3. 使用QueryInterface()的机制比dynamic_cast更有效;
  4. 好的,存在boost :: intrusive_ptr,但到目前为止还不符合标准。即使它在那里,这将是单独的类来解决侵入式智能ptr的任务。假设它在那里,是的,我可以做一些事情

    interface ITable : intrusive_ptr {}
    interface IField : intrusive_ptr {}
    

    但是QueryInterface()机制呢?

    P.S。这个问题根本不是关于COM的。

1 个答案:

答案 0 :(得分:2)

标准使用:在大多数情况下使用组合而不是继承(标准库中的继承非常少)。更喜欢基于模板的通用编程而不是运行时多态。更喜欢价值类型,而不是在任何地方保留未知终极类型的指针。你应该用C ++做的所有事情,而不是像Java一样对待它。