【问题标题】:C++ abstract or interface classes? [closed]C++ 抽象类还是接口类? [关闭]
【发布时间】:2015-06-29 19:11:51
【问题描述】:

我发现了这个问题:When to use abstract class or interface?。但有人要求JavaC++ 是不同的。有多重继承,所以可能答案也不同。

什么时候应该使用接口类?

如果我使用PIMPL 成语,那么我只需要转发声明一个成员。如果我将私有函数移到PIMPL 类中,那么abstract 类中将只有publicprotected 函数。所以像这样的abstract 类和˙interface 类之间的区别在于interface 类中应该只有纯虚函数。与前面提到的相比,它有什么优势吗?

【问题讨论】:

  • 你可能想看看this问题。
  • 谢谢。很好,但我也想知道何时使用抽象类(不使用 PIMPL)以及何时使用接口?
  • C++ 没有“接口”类型的概念。最接近的是抽象基类。

标签: c++ abstract-class


【解决方案1】:

当类层次结构可以被视为通用时,使用接口类;可以交换子类而不影响调用类。

例如,有一个std::istream 类。如果需要std::istream,任何函数或方法都可以将输入视为通用输入。因此,可以将cinifstream 传递给函数。 界面是一致的。

当您想从接口中隐藏实现时,请使用 PIMPL 习惯用法。在库类中使用。

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 2021-12-17
    • 2015-06-27
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2011-05-22
    • 2012-09-12
    相关资源
    最近更新 更多