C ++抽象或接口类?

时间:2015-06-29 19:11:51

标签: c++ abstract-class

我发现了这个问题:When to use abstract class or interface?。但有人要求JavaC++不同。有多重遗产,所以答案也许不同。

何时使用接口类?

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

1 个答案:

答案 0 :(得分:1)

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

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

如果要从界面隐藏实现,请使用PIMPL惯用法。用于库类。