子类需不需要全部实现父类的接口呢?

#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、父类是纯虚类
子类必须全部实现这些虚接口,不然没有办法实例化对象。
*/

posted @ 2019-03-08 17:35  ren_zhg1992  阅读(783)  评论(0)    收藏  举报