当前位置: 代码迷 >> 综合 >> c++ public、protected、private继承方式
  详细解决方案

c++ public、protected、private继承方式

热度:82   发布时间:2023-10-17 10:38:18.0

公有继承:

c++ public、protected、private继承方式

 

私有继承:

私有继承可以将基类的原有对外接口都封闭的作用。那么在派生类之外通过派生类的对象就不能直接访问从基类继承来的成员和成员函数,因为通过private这种方式继承的时候,继承过来的那些基类的成员都变成了私有的了,所以在派生类外就不能访问了,但是在派生类里面,还是可以访问的。

所以这个时候,如果还是想访问基类中的成员,就必须在派生类中重新定义对外的访问接口。

c++ public、protected、private继承方式

基类定义:

c++ public、protected、private继承方式

派生类定义:

c++ public、protected、private继承方式

c++ public、protected、private继承方式

在派生类中,需要在定义访问的接口,才能使得派生类的对象访问到基类的成员。

所以派生类中重新定义了move函数,getX,getY函数。

主函数中访问:

c++ public、protected、private继承方式

在主函数中,通过派生类 Rectangle的实例对象访问基类的成员x和y,以及基类的move函数。

 

保护继承:

c++ public、protected、private继承方式

c++ public、protected、private继承方式

 

protected成员的特点:

c++ public、protected、private继承方式

 protected 修饰的成员在类外不能直接通过类的对象访问

但是在继承这个类的派生类B内的成员函数中,可以直接访问!!

【对外隐藏protected修饰的成员,但是又可以让派生类直接访问protected修饰的成员。】

而private 修饰的成员,在类外不能直接访问,在派生来的成员函数中,也不能直接访问,而是一定要通过基类提供的访问接口访问!

这就是private和protected的区别。

 

所以上面说的,通过private的方式继承的对象,基类的任何成员在派生类中都会变成private的,那么在定义派生类的派生类的时候,就会满足上面的这种要求了。

而以protected的方式继承产生的派生类,定义派生类的派生类的时候也是满足上面所说的。

所以,以private和protected方式继承得到的派生类,对于当前派生类的对象的访问来说,都是一样的,都是不能直接通过派生类的对象直接访问基类的成员了,他们两种继承方式的主要区别就在于上面说的派生类的派生类中的访问权限不同了吧。

以上——【我的理解】

  相关解决方案