• 【C++】区分接口继承和实现继承


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

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

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

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

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

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

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

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

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

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

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

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

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

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

      参考资料:Effective C++

  • 相关阅读:
    记一次vue.js用 http.post 前端传json到后台用javabean接收的坑
    springboot1.5.x 测试sample
    sqlserver 查询表缺失索引
    Docker swarm上线的一些问题
    数据库日志文件压缩
    Docker 挂载
    单播广播和多播
    导入数据库表后某些字段的精度为0
    Source Qualifiter组件中Sql Query属性的脚本返回结果集的列数大于组件定义的数量
    distinct和order by冲突
  • 原文地址:https://www.cnblogs.com/dwdxdy/p/2593006.html
Copyright © 2020-2023  润新知