iOS程序员都熟悉协议的使用,说到底就是一个类委托另一个类帮忙做一下自己不能做或者不应该做的事情。在c++中也有类似的功能,但是也不完全相同,我参考中的解释,翻译在此。
c++中没有内置的interface接口概念,可以使用只包含虚函数的抽象类来实现。因为c++支持多重继承,你可以创建一个子类继承该类,然后在子类中实现虚函数。如下代码所示,
//定义一个抽象类Interfaceclass Interface{public: Interface(){}//默认构造函数 virtual ~Interface(){}//析构函数 virtual void method1() = 0;//虚函数1 virtual void method2() = 0;//虚函数2};//继承自抽象类的子类Concrete//Concrete.h文件class Concrete:public Interface{private: int myMember;public: Concrete(){} ~Concrete(){} void method1();//抽象类中的虚函数 void method2();};//Concrete.cpp文件//...省略不相干代码void Concrete::method1(){ //虚函数1}void Concrete::method2(){ //虚函数2}
抽象类是必须包含至少一个虚函数的类,你不可以创建抽象类的对象,但是可以差ungjianyige指向它的指针。同样每一个继承自抽象类的子类必须实现抽象类中的虚函数,例如上例中的method1和method2必须在子类中实现。