美文网首页
继承(Inheritance)

继承(Inheritance)

作者: 吃柠檬的鸮 | 来源:发表于2019-05-11 20:07 被阅读0次

    当子类继承基类时,子类包含了父基类所有数据及操作的定义。

    在 C++ 实践中,继承主要用于两种场合:

    1. 实现继承:子类继承父类的实现代码;
    2. 接口继承,子类仅继承父类的方法名称。

     
    优点:

    1. 实现继承通过原封不动地重用基类代码减少了代码量。
    2. 由于继承时编译时声明的,编码者和编译器都可以理解相应地操作并发现错误。
    3. 接口继承可用于程序上增强类地特定 API 的功能,在类没有定义 API 的必要实现时,编译器同样可以侦破。

     
    缺点:

    1. 对于实现继承,由于实现子类的代码在父类和子类间延展,要理解其实现变得更加困难。
    2. 子类不能重写父类的非虚函数,当然也就不能修改其实现。
    3. 基类可能定义了一些数据成员,还要区分基类的物理轮廓。

     
    结论:

    1. 不要过多使用实现继承,组合通常更合适一些。
    2. 所有继承最好必须时 public 的,如果想私有继承的话,应该采取包含基类实例作为成员的方式作为替代。
    3. 如果该类具有虚函数,其析构函数应该为虚函数。
    4. 限定仅在子类访问的成员函数为 protected ,需要注意的是,数据成员应始终为私有。
    5. 当重定义派生的虚函数时,在派生类中明确声明其为 virtual。遗漏 virtual 并不影响其为虚函数的本质,但阅读者需要检索类的所有祖先以确定该函数是否为虚函数。

    相关文章

      网友评论

          本文标题:继承(Inheritance)

          本文链接:https://www.haomeiwen.com/subject/wodfaqtx.html