public protect private继承

引自原来在CGD讨论的几点总结:
1. public继承被称为类型继承(type inheritance)。往往反映is-a关系。
2. protected继承基类的所有公有成员都成为派生类的protected成员。这意味着它们可以被后来从该类派生的类访问,但不能在层次结构之外被访问。
3. private继承被称为实现继承(implementation inheritance)。派生类提供自己的公有接口,重用基类的实现。 

 

数据成员的访问域变化:
1. public继承的话,原来父类的public ,protected成员继承到子类中,类型不变员
2. protected继承的话,原来父类的public ,protected成员继承到子类中,并成为protected类型成员
3. private继承的话,原来父类的public ,protected成员继承到子类中,并成为private类型成员

PS一下
理想情况下,是能不用public就不用,因为一旦public就引发一系列如client可以用base pointer去new inherit class,则dtor需要是virtual的问题
但大多数情况下都是public的情况,大家对此也比较熟悉,所以下面谈谈不常见的情况

在private inheritance时,如果不存在必须实现virtual method的情况下,推荐选择composition,避免了未来可能的multi inheritance导致出现的讨厌的菱形结构从而引发出现的C++阴暗面: virtual inheritance,即不要因为只是想少敲点代码而失去了良好的设计

protected和private区别在于:如果只是为了重用code,在不能composition的情况下则优先考虑private,除非派生类还会需要或是有可能会被其他类继承的话,才需要变成protected。

转载于:https://www.cnblogs.com/songQQ/archive/2009/08/26/1554700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值