子类需不需要全部实现父类的接口呢?
#include <iostream> using namespace std; class Base { virtual void func1() { cout << "B_func1" << endl; } void func2() { cout << "B_func2" << endl; } }; class Son : public Base { }; class IObj { virtual void func3() = 0; virtual void func4() = 0; }; class CObj1 : public IObj { virtual void func3() { cout << "C2_fun3" << endl; } }; class CObj2 : public IObj { virtual void func3() { cout << "C2_fun3" << endl; } virtual void func4() { } }; int main() { Base b; Son s; //父类非纯虚类 //IObj i; //error:不能实例化抽象类 CObj1 c1; //“CObj1”: 不能实例化抽象类 纯虚函数virtual void func4() = 0;没有强制替代项 CObj2 c2; //OK system("pause"); }
/* 子类需不需要全部实现父类的接口呢?
1、父类不是纯虚类
1.1、父类中的非虚函数:都可以,建议不实现; (如果子类自己实现,那这个接口就应该是virtural了)
1.2、父类中的虚函数:都可以,建议实现;(如果想用父类的,那这个接口就没有必要是virtual的了)
2、父类是纯虚类
子类必须全部实现这些虚接口,不然没有办法实例化对象。
*/

浙公网安备 33010602011771号