关于C++中三种继承方式的讨论(公有继承,私有继承,保护继承)

公有继承,保护继承,私有继承

(1)       在派生类中:三种派生方式下,都是只有基类的私有成员不能被访问。

(2)       关于基类成员的访问属性:

公有派生:基类各成员的访问属性均不变,基类的私有成员在派生类中不能被访问,也即被隐藏了,但这并不等于说基类的私有成员不能由派生类继承。

        私有派生:基类各成员的访问属性均变成私有类型,基类的私有成员被隐藏。

保护继承:基类的公有成员,保护成员的访问属性都将变成保护的,基类的私有成员被隐藏。

(3)       派生类对象:公有派生下,派生类对象只能访问派生类和基类的公有成员。

                   私有和保护下,都不能访问基类的任何成员。

 

重要结论:在私有继承和保护继承下,基类所有成员在派生类中或派生类对象中的访问属性

都是相同的。那既然这样,这二者难道是一样的?其实他们是有区别的,当将派

生类作为新的基类继续派生时,区别就出现了:

  例如:A类是B类的基类,B类是C类的基类。

1.                  当B私有继承A时,由于B类中的A类所有成员都是私有的,因此无论C类是以什么方式来继承B类的,在C类中都无法访问A类的成员。

2.                  当B保护继承A时,A类的公有成员和保护成员都变成保护成员了,这样无论C类是以什么方式来继承B类的,在C类中都可以访问A类的公有成员和保护成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值