在C ++中,我可以进行interface
和class
声明。但是,与C#相比,这里的interface
很可能是一个类,为什么会出现呢?
interface Interface {
};
并且
class Class {
};
答案 0 :(得分:2)
正如评论中所提到的,标准C ++不支持"接口"直接构建。这是一些供应商的扩展。
其他语言(例如Java)。
标准C ++中的等价物是一个抽象基类,它没有数据成员。
class SomeInterface
{
public:
virtual ~SomeInterface() = 0;
virtual void SomeAction(int flag) = 0;
};
继承自这样的类会强制派生类覆盖/实现所有虚函数,否则无法实例化它们。
一般来说,没有数据成员的抽象基类通常可以在没有非平凡构造函数的情况下逃脱(因为类没有成员初始化)。
与支持接口构造的其他语言不同,抽象基类允许;