6.继承与面向对象设计
来源:互联网 发布:中央网络电视台 编辑:程序博客网 时间:2024/05/16 05:33
Item32:Make sure public inheritance “is-a”.
Item33:Avoid hiding inherited names.
Item34:Differentiate between inheritance of interface and inheritance of implementation.
①纯虚函数:只继承接口(也可以在类外定义)让Derived class具体实现。
②虚函数:同时继承接口和实现,又希望DC覆写其实现。
③非虚函数:继承接口与实现,并且不允许覆写(否则覆盖其Base实现)
Item35:Consider alternatives to virtual functions.
①NVI(non-virtual interface)通过public non-virtual(virtual wrapper)间接调用virtal
②Strategy设计模式替换,具体实现通过调用对象来执行。
Item36:Never redefine an inherited non-virtual function.
Item37:Never redefine a functions’s inherited default parameter value.
不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定的,可通过NVI将缺省参数放入public non-virtual函数的参数列表来控制这种问题。
Item38:Model “has-a” or “is-implemented-in-terms-of” through composition.
复合:应用域即has-a有一个,在实现域上是根据某物而实现,如set有一个红黑树,它是根据红黑树而实现。
Item39:Use private inheritance judiciously.
仅需要重新定义继承而来的virtual函数时合理,一般可用复合替换
class B{}; class D:private B { private n;};sizeof(B)!=0;sizeof(int)==sizeof(D); //(EBO)空白基类最优化
Item40:Use multiple inheritance judiciously.
virtual继承会增加大小,速度,初始化(赋值)复杂度等成本,如果virtual base class不带任何数据,将是最具实用价值的情况。
0 0
- 6.继承与面向对象设计
- 6.继承与面向对象设计
- 继承与面向对象设计
- 继承与面向对象设计
- effective C++: 6.继承与面向对象设计
- Effective C++ 6.继承与面向对象设计
- [Effective C++] 继承与面向对象设计
- 第六章 继承与面向对象设计
- 第六章 继承与面向对象设计
- Effective C++ -- 继承与面向对象设计
- [C++]继承与面向对象设计
- [C++]继承与面向对象设计
- 《Effective C++》继承与面向对象设计
- 6 继承与面向对象的设计
- 关于面向对象设计中继承与组合的选择
- Effective C++读书笔记---继承与面向对象设计
- effective C++ 继承与面向对象设计 笔记
- Effective C++(六)继承与面向对象设计
- 最短路算法 :Bellman-ford算法 & Dijkstra算法 & floyd算法 & SPFA算法详解&BFS
- 【LeetCode】66. Plus One
- AlphaGo开源代码
- 【翻译自mos文章】在RHEL7/OL7上安装Oracle 12.1.0.2的服务器端或者客户端时,报需要"compat-libstdc++"包
- 3.redis内存占用飙升
- 6.继承与面向对象设计
- POJ_P1741 Tree(树上点分治)
- TC SRM 684 Div2 900pts
- android gradle plugin 1.3.0 以上使用 public.xml 固定 id
- 你不知道的JavaScript--Item34 大白话讲解Promise
- MFC对话框-DoDataExchange()函数使用
- 01背包
- Cocos2d-x 2048游戏教程 第一部分
- 动态规划 HDU 1466 计算直线的交点数