标签:blog ar 使用 sp strong on 2014 log bs
许多C++程序员从来没用过私有继承来设计他的类。的确,如果是本该用私有继承的地方却用了公有继承,对程序的功能的实现并无影响。但这种误用是一种错位的描述,会引起阅读者的误解,甚至会引起类的使用者的茫然。当我们在写一个类的声明的时候,实际上是在做一个意图的设计。而设计者需要的恰恰是精确描述。
要解释私有继承,我们先来看看共有继承,好做个比较。
公有继承,本质上就是 is-a 的关系。如,描述吉普车是一种车,那么可以进行以下的设计:
class Car { }; class Jeep : public Car { }
class Engine { public: void Run(); }; class Car : private Engine { public: void Drive() { // let engine go! Run(); } };在关系描述上,等同于组合,如:
class Car { ... private: Engine m_engine; }
私有继承带来过多的程序开销,而组合却是短平快,所以一般来说,设计者想描述Has-A的关系时,组合方式是首选的。
但以下两种方式则必须使用私有继承:
标签:blog ar 使用 sp strong on 2014 log bs
原文地址:http://blog.csdn.net/linqingwu75/article/details/41132143