Rob*_*ide 1 c++ abstract-class interface visual-c++
阅读本文后:在C++中使用接口
我决定使用__interface带有宏的关键字来添加虚拟析构函数,如上面的链接所述.
我很高兴__interface关键字会导致编译器强制执行接口规则,但是当我把它用于测试驱动器时我很失望...事实证明__interface关键字没有强制执行接口中的方法不应该包含的规则方法体.
我当然可以为函数方法添加一个宏,但我不想这样做.有没有人有任何其他建议?
编辑:可移植性对我来说是一个无问题,因为我必须在Windows和Linux上编译所以我将使用__interface关键字,当我在Windows上而不是在Linux上,这将是为了执行以下规则,这不能通过抽象基类强制执行:
除了可以解决方法的析构函数问题之外,当然可以看到在windows环境中使用此关键字的优势.
标准C++中没有与Java相同的接口关键字,C++中的所有内容都是抽象基类.
抽象基类是一个具有至少一个纯虚函数的类,并且不能创建这样的类的对象,但可以创建指向它的指针或引用.因此,它可以用于模拟接口的行为.
Abstract类的示例作为接口
class Shape
{
public:
virtual void draw()=0;
};
class Rectangle:public Shape
{
public:
void draw()
{
//draw a Rectangle
}
};
int main()
{
Shape *ptr = new Rectangle();
ptr->draw(); //calls draw() of Rectangle class
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:
__interface关键字作为C++编译器的新Microsoft扩展.
这是非C++标准指定和非可移植.
编辑:这个答案是一个标题为" __interface关键字Win c ++ "的问题并被标记C++.