C++抽象类或接口类

C++ abstract or interface classes?

本文关键字:接口 抽象类 C++      更新时间:2023-10-16

我发现了这个问题:什么时候使用抽象类或接口?。但对JavaC++的要求不同。有多重遗传,所以答案可能也不一样。

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

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

当类层次结构可以被视为泛型时,使用接口类;可以在不影响调用类的情况下交换子类。

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

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