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++中没有EDCOX1的0个关键字。该示例中包含的头可能将其定义为宏。
- 当我搜索"C++接口"StAdppOrth.com /问题/ 318064 / & Helip时,这是谷歌的第一个站点。
- interface关键字是组件对象模型(COM)的一部分。您可能希望添加COM标记并更新问题。
- afaik-interface材料是特定于COM接口材料的。不知道shell扩展是否需要这个。
- msdn.microsoft.com/en-us/library/50h7kwtb.aspx有一个Microsoft扩展,它添加了关键字__interface。
- 第一:我不知道C++中没有EDCOX1的0个关键字。您是对的,在ObjBase.h头中,宏定义如下:#define interface struct。第二:我相信您可以将这个问题标记为重复的,因为我在问如何正确定义接口。(我已将其标记为副本)
- @tobias shell扩展是扩展Windows功能的小程序。它们必须作为COM组件编写。
C++没有严格按照某些语言的方式提供接口。C++机制是为一个类提供一个或多个纯虚拟方法来声明所需的接口。严格地说,这样的类只是一个抽象类,但可以考虑将其称为子类随后将实现的接口。