C++继承的三种方式

1、类成员的三种类型

public成员可以被任何类访问,

protected成员限于自己和子类访问。在同一个类中使用,其访问权限相当于私有成员;但是在派生时,他的访问权限相当于公有成员

private成员限于自己访问,即仅可在自己的类内使用。

 

2对于公有继承方式:

·基类成员对派生类的可见性对派生类来说,

         基类的公有成员和保护成员可见:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态

         基类的私有成员不可见:基类的私有成员仍然是私有的,派生类不可访问基类中的私有成员。

        所以, 对派生类对象来说,基类的公有成员是可见的,其他成员是不可见。在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。

3对于私有继承方式:

·基类成员对派生类的可见性对派生类来说,

        基类的公有成员和保护成员是可见的:基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问;

        基类的私有成员是不可见的:派生类不可访问基类中的私有成员。

        所以,对派生类对象来说,基类的所有成员都是不可见的在私有继承时,基类的公有和保护成员只能由直接派生类的成员(而非对象)访问,而无法再往下继承。

4对于保护继承方式:

  ·基类成员对派生类的可见性对派生类来说,

        基类的公有成员和保护成员是可见的:基类的公有成员和保护成员都作为派生类的保护成员,并且可以被其他成员访问,但是不能被这个派生类的对象所访问;

         基类的私有成员是不可见的:派生类不可访问基类中的私有成员。

  所以,对派生类对象来说,基类的所有成员都是不可见的。在保护继承时,基类的成员也只能由直接派生类的其他成员(而非对象)访问,而无法再往下继承。

         这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,但是,如果派生类作为新的基类继续派生时,二者会有明显区别  

         例如:B类以私有方式继承了A类后,B类又派生出新类C,那么C类的其他成员以及派生类的对象都不能访问间接从A类中继承来的成员(因为在B类中他们属于私有成员,不管以什么方式派生出C类,都无法访问私有成员)

         如果B以保护方式继承了A类后,B类由派生出新类C(假设以公有方式继承),那么C类的其他成员(其对象除外)就可以访问间接从A类中继承来的成员(因为在B类中他们属于保护成员,以公有继承的方式派生出C类后,就跟B类公有成员一样可以被访问)

 

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值