use*_*119 0 c++ design-patterns
C++ 中的接口被实现为抽象类,即纯虚方法。同样,C++中的抽象类也是同样的实现方式。我可以说接口和抽象在 C++ 中是相同的,除了接口可能是动词的概念 - 行为和抽象类是名词。我的理解对吗?我问这个问题是因为设计模式——以不同的方式谈论接口和抽象。另外,原因是JAVA有两个不同的关键字——interface和abstract。我们需要在java中实现一个接口。我们需要扩展抽象类。然而,在CPP中,我们只是继承抽象类,然后实现。
小智 5
正如您所说,C++ 中的接口是使用仅具有纯虚函数的抽象类实现的。纯虚函数必须由任何具体(即非抽象)派生类重写。通过在虚函数中添加表达式=0,我们表明该虚函数是纯虚函数。抽象类是至少包含一个纯虚函数的类。
例如:
class AbstractBase {
public:
const char* Hello() { return "Hello World!"; } // a normal non-virtual function
virtual void Method_1() {} // a normal virtual function
virtual int Method_2() = 0; // a pure virtual function makes AbstractBase class not instantiable
};
class InterfaceBase {
public:
const char* Hello() = 0; // a pure virtual function
virtual void Method_1() = 0; // a pure virtual function
virtual int Method_2() = 0; // a pure virtual function
};
Run Code Online (Sandbox Code Playgroud)