c++笔记 用组合代替继承
来源:互联网 发布:mac 桌面文件消失 编辑:程序博客网 时间:2024/04/30 01:54
设计原则:多用组合,少用继承。考虑下面的情况:
class Timer {virtual void onTick(); //定时器每滴答一次,此函数被调用一次。 }class Widget: public Timer {public:virtual void onTick();}子类Widget需要重新实现onTick函数,怎么才能用组合实现呢?可以用下面的方法解决:
class Widget {private:class WidgetTimer: public Timer {public:virtual void onTick();};WidgetTimer timer;};
这个设计有两个好处:
1.阻止Widget派生类重新定义onTick,实际上这是在C++中模拟了java或者C#中final或sealed关键字的作用。
2.可以降低了Widget的编译依存性。若用继承,Widget定义文件中必需#include Timer.h才行,但移除这条语句后,要使用WidgetTimer声明式,如下:
class Widget {private:class WidgetTimer;WidgetTimer* timer;};
摘自Effective C++
- c++笔记 用组合代替继承
- C++编程规范之34:用组合代替继承
- 用组合代替继承能为 Activity 带来什么
- 用聚合代替继承
- 用组合数学公式代替回溯
- 面向对象随想 -- 多用组合来代替继承
- c++_3: 继承和组合
- 继承与组合 C++(五)
- 组合与继承 学习笔记
- Object-C有多继承吗?没有的话用什么代替?
- Objective-C 学习笔记(二) 类继承,组合,多态等
- 高质量C/C++编程指南 阅读笔记(五)类的继承与组合
- C++学习笔记 代替define
- 31天重构学习笔记8. 使用委派代替继承
- Objective-C的继承与组合
- java学习笔记<六>继承与组合
- java 继承与组合学习笔记
- Effecitve 阅读笔记--private继承与组合
- x86从 start_kernel 开始的中断初始化
- zoj1037
- zoj1048
- XMLLite解析xml
- zoj1049
- c++笔记 用组合代替继承
- zoj1051
- zoj1067
- jquery dialog
- zoj1115
- Linux下Libreoffice增加字体
- CSS选项卡
- zoj1151
- 面相对象的进阶---内部类、匿名类、静态内部类