Java等语言明确使用interface关键字来表示接口.使用Java之后,这个概念似乎足以让我证明一个关键字可以强制执行这个概念.
当然,可以使用纯虚拟类并将其标记为接口.但是,这个关键字似乎非常有用,并且与纯虚拟类不同,因此非常有用.也许它被包含在C++ 0x中?
因为C++允许多重继承,并且因为接口是一个抽象类,其所有成员也是抽象/虚拟的,所以C++不需要它 - 类可以简单地"扩展"多个其他类,其中任何一个都可能是纯虚拟的(抽象).
另一方面,Java和C#不允许使用MI,因为这些语言的设计者认为MI会产生比解决的问题更多的问题.但是对象仍然需要"成为"许多东西(OOP是一种关系),所以接口提供了一种机制,允许对象成为很多东西,而不继承多个实现 - 保留宝宝,但扔掉了洗澡水.
这是多余的,因为接口通过让任何类成员都是纯虚拟(= 0)来表示.
添加"interface"关键字会增加实现的复杂性,而无需添加任何真正有用的功能; 它会复制现有的功能.正如其他人所说,它只是一个纯粹的虚拟课程.Java和C#必须有"接口"才能获得C++已有的功能.从哲学上讲,C++旨在使程序员能够编写好的软件,而不是阻止程序员编写不良软件.根据我的经验,对抗MI的喧嚣被夸大了.白痴滥用它,就像他们滥用一切,而不是把白痴归咎于白痴,人们指责工具.