两者都能实现has-a关系,但是containment更受青睐。原因有如下几点:
1、清晰。因为其他类在本类中的表现形式是明确的类对象,这样你就可以通过成员对象名来调用你想调用的成员对象的public接口来完成本类的功能。而使用private继承相对抽象;
2、private继承会引起很多问题。比如说多继承引起的名称歧义问题;
3、containment允许你使用相同类的多个不同的对象,而private继承只允许你使用父类的无名对象,这对于处理对象内部成分的细节很是麻烦。
不过private继承也有它的好处:
1、父类的protected成员相对于外界来说是不可见的,却是面向子类的接口,如果你要达到调用父类protected成员的目的就必须使用private继承。
2、就是当你要重写父类的virtual函数的时候,因为它必须通过继承机制来实现。
Private继承与containment的取舍
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...