关于C++:用纯虚方法实现接口VS类

Interface vs class with pure virtual methods

本问题已经有最佳答案,请猛点这里访问。

我想在纯C++中为Windows编写shell扩展,但是我被关键字界面弄糊涂了。在许多文章中,我读到我可以通过编写只包含虚拟方法的类而不使用任何代码来在C++中创建接口。例如:

1
2
3
4
5
6
7
class IIsThisAnInterface_QuestionMark {
    virtual MyMethod (
        int firstParameter,
        double secondParameter) = 0;
    virtual AnotherMethod (
        wchar_t *firstParameter) = 0;
}

但是本文作者使用interface关键字定义了接口。所以我的问题是:如何正确定义C++中的接口?(因为我是在C的世界长大的,所以我知道接口是为实现这些接口的类指定方法的构造。)


C++没有严格按照某些语言的方式提供接口。C++机制是为一个类提供一个或多个纯虚拟方法来声明所需的接口。严格地说,这样的类只是一个抽象类,但可以考虑将其称为子类随后将实现的接口。