谈谈C++私有继承
来源:互联网 发布:白城广逸网络地点 编辑:程序博客网 时间:2024/04/30 18:28
许多C++程序员从来没用过私有继承来设计他的类。的确,如果是本该用私有继承的地方却用了公有继承,对程序的功能的实现并无影响。但这种误用是一种错位的描述,会引起阅读者的误解,甚至会引起类的使用者的茫然。当我们在写一个类的声明的时候,实际上是在做一个意图的设计。而设计者需要的恰恰是精确描述。
- 私有继承的弦外之音
要解释私有继承,我们先来看看共有继承,好做个比较。
公有继承,本质上就是 is-a 的关系。如,描述吉普车是一种车,那么可以进行以下的设计:
class Car{};class Jeep : public Car{}
私有继承,子类只能在类内部使用父类的功能,而不能将父类的功能以接口的形式开放给外部,也就是说,子类的对象无法直接使用到父类的功能接口。所以,私有继承的涵义就成了:子类可以借助父类的功能来实现自己的功能。这就是典型的has-a 的关系。
class Engine{public: void Run();};class Car : private Engine{public: void Drive() { // let engine go! Run(); }};在关系描述上,等同于组合【严格意义上不能说是等同,因为毕竟私有继承的方式还可以允许继承类使用基类的protected成员,而通过组合方式的是无法使用被组合的类的protected成员的】,如:
class Car{ ...private: Engine m_engine;}
- 私有继承VS组合
私有继承带来过多的程序开销,而组合却是短平快,所以一般来说,设计者想描述Has-A的关系时,组合方式是首选的。
但以下两种方式则必须使用私有继承:
- A类需要使用B类的protected成员函数来实现自己的功能时
- A类需要重写B类的虚函数时
0 0
- 谈谈C++私有继承
- C/C++--私有继承
- C++:私有继承
- C/C++:private私有继承
- c++:私有继承,公有继承,保护继承
- c/c++整理--私有继承
- C++:公有继承、私有继承和保护继承
- 【C++】解析共有继承、私有继承、保护继承区别联系
- C++中私有继承实例
- Objective-C私有变量继承问题
- 4.C++:C++类的私有继承
- 私有继承
- 私有继承
- 私有继承
- 私有继承
- 私有继承
- 私有继承
- 私有继承
- 【Leetcode】Populating Next Right Pointers in Each Node in JAVA
- gentoo软件安装
- Fragment防止自动清理 (ViewPager滑动时,滑出屏幕后被清理)
- C++标准库和命名空间
- Android4.4 Framework分析——getContentResolver启动ContentProvider的过程
- 谈谈C++私有继承
- 消息摘要算法-MAC算法系列
- [Leetcode]Jump Game && Jump Game II
- 琐碎事情
- jsoup:解析HTML用法小结
- 心跳数据采集及简单处理-黄
- cannot be used as a boolean
- HDU 1015 Safecracker 【DFS】
- 9个完整android开源app项目