zoukankan      html  css  js  c++  java
  • 【C++】区分接口继承和实现继承

      利用public继承基类,可以将继承的结果分为两类:函数接口继承函数实现继承

      声明一个纯函数的目的是为了让派生类只继承函数接口.纯虚函数有两个突出的特性:

      它们必须被任何"继承了它们"的具体类重新声明,而且它们在抽象类中通常没有定义.

      声明非纯虚函数的目的,是让派生类继承该函数的接口和缺省实现.

      声明非虚函数的目的,是为了令派生类继承函数的接口及一份强制性实现.

      对class进行设计时,声明成员函数,要谨慎选择,不同类型的声明意味根本意义不相同的事情.

      下面是经验不足的设计者最常犯的错误:

      1.将所有函数声明为非虚函数,相当派生类继承了函数接口和强制性实现,让派生类没有进行特化工作的空间.

       尤其是non-virtual析构函数带来的问题.

       但是当设计一个并不想成为基类的类时,应该将其所有成员函数都声明为non-virtual.

      2.将所有成员函数都声明为virtual.有时候这样做是正确的,但是有时候一些函数不该在派生类中被重新定义,

       这些函数代表继承体系中的不变性.因此,如果类体的不变性凌驾于特异性时,需要将函数声是为non-virtual.

      启发:进行面向对象的继承时,类体的设计,至关重要.良好的类体及其继承体系的设计,便于系统的实现,推护和扩展.

      因而在成员函数声明时,要注意类体的作用和目的,从而选择合理的声明方式.

      参考资料:Effective C++

  • 相关阅读:
    CMD指令
    六种Socket I/O模型幽默讲解
    性格与职业的选择
    为什么主引导记录的内存地址是0x7C00?
    pandas数据分析第二天
    pandas数据结构和介绍第一天
    tornado options
    tornado.web.StaticFileHandler
    mysql多条更新
    pandas
  • 原文地址:https://www.cnblogs.com/dwdxdy/p/2593006.html
Copyright © 2011-2022 走看看