how to implement Interfaces in C++?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Preferred way to simulate interfaces in C++
我很想知道C++中是否有接口,因为在Java中,设计模式的实现主要是通过接口去耦类。在C++中有类似的接口创建方法吗?
C++没有内置的接口概念。您可以使用只包含纯虚拟函数的抽象类来实现它。因为它允许多重继承,所以您可以继承这个类来创建另一个类,然后在其中包含这个接口(我的意思是,对象接口:)。
示例如下-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class Interface { public: Interface(){} virtual ~Interface(){} virtual void method1() = 0; //"= 0" part makes this method pure virtual, and // also makes this class abstract. virtual void method2() = 0; }; class Concrete : public Interface { private: int myMember; public: Concrete(){} ~Concrete(){} void method1(); void method2(); }; // Provide implementation for the first method void Concrete::method1() { // Your implementation } // Provide implementation for the second method void Concrete::method2() { // Your implementation } int main(void) { Interface *f = new Concrete(); f->method1(); f->method2(); delete f; return 0; } |
C++中没有接口概念,可以使用抽象类模拟行为。抽象类是至少有一个纯虚拟函数的类,不能创建抽象类的任何实例,但可以创建指向它的指针和引用。此外,从抽象类继承的每个类必须实现纯虚拟函数,以便可以创建其实例。
接口只不过是C++中的一个纯抽象类。理想情况下,此接口
1 2 3 4 5 6 7 8 9 10 | class InterfaceA { public: static const int X = 10; virtual void Foo() = 0; virtual int Get() const = 0; virtual inline ~InterfaceA() = 0; }; InterfaceA::~InterfaceA () {} |