C或c++中公有继承,保护继承和私有继承的区别是什么

  介绍

本篇内容主要讲解“C或c++中公有继承,保护继承和私有继承的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C或c++中公有继承,保护继承和私有继承的区别是什么”吧!

<强> C/c++公有继承,保护继承和私有继承的区别

,,在c++的继承控制中,有三种不同的控制权限,分别是公共的,和私人保护。定义派生类时,若不显示加上这三个关键字,就会使用默认的方式,用结构定义的类是默认公共继承,类定义的类是默认私人继承。这和Java有很大的不同,Java默认使用公共继承,而且只有公有继承。

,,,,,,,1 .使用公共继承时,派生类内部可以访问基类中公共的和受保护的成员,但是类外只能通过派生类的对象访问基类的公共成员。

,,,,,,,(1)基类的公共成员在派生类中依然是公共的。

,,,,,,,(2)基类中保护的成员在派生类中依然是受保护的。

,,,,,,,(3)基类中的私人成员在派生类中不可访问。

,,,,,,,2。使用保护继承时,派生类内部可以访问基类中公共的和受保护的成员,并且类外也不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的公共的和受保护的成员)。

,,,,,,,(1)基类的公共成员在派生类中变为保护成员。

,,,,,,,(2)基类的保护成员在派生类中依然是保护成员。

,,,,,,,(3)基类中的私人成员在派生类中不可访问。

,,,,,,3。使用私人继承时,派生类内部可以访问基类中公共的和受保护的成员,并且类外也不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的公共的和受保护的成员)。

,,,,,,,(1)基类的公共成员在派生类中变成私人成员。

,,,,,,,(2)基类的保护成员在派生类中变成私人成员。

,,,,,,,(3)基类的私有成员在派生类中不可访问。

,,,,,,,为了便于理解,我们用一个表格来说明这几种控制符使用的情况:,,

派生方式,基类的公共成员基类的保护成员基类的私有成员公共派生还是公共成员变为保护成员不可见保护派生变成成保护员,,还是保护成员不可见私人派生变为私人成员变成私人成员不可见

,,,,,,下面用代码简单叙述

# include  & lt; iostream>,      {class  Base    公众:   public_a; int 才能;   virtual 才能;void 测试(),=,0;,      保护:   protected_a; int 才能;      私人:,   private_a; int 才能;   },,//公有继承,   class  PublicDerived : public  Base  {,   公众:   virtual 才能;void 测试(),{,   ,,,public_a =, 1,,,,,,,,,,,//public_a 公共继承后还是公共类型,   ,,,protected_a =, 2,,,,,,,,,//protected_a 还是受保护的类型,   ,,,//private_a =, 3,,,,,,,,,,//派生类不可访问基类私有成员,   ,,},   },,//保护继承,   class  ProtectedDerived : protected  Base  {,   公众:   virtual 才能;void 测试(),{,   ,,,public_a =, 1,,,,,,,,,,,//public_a 保护继承后变为受保护的类型,   ,,,protected_a =, 2,,,,,,,,,//protected_a 还是受保护的类型,   ,,,//private_a =, 3,,,,,,,,,//派生类不可访问基类私有成员,   ,,},   },,//私有继承,   class  PrivateDerived : private  Base  {,   公众:   virtual 才能;void 测试(),{,   ,,,public_a =, 1,,,,,,,,,,,//public_a 私人继承后变为私人类型,   ,,,protected_a =, 2,,,,,,,,,//protected_a 私人继承后变为私人类型,   ,,,//private_a =, 3,,,,,,,,,//派生类不可访问基类私有成员,   ,,},   };

,,,,,,,在c++中公共继承是是一个的关系。也就说适用于基类身上的一定也适用于派生类身上,因为每一个派生类对象也都是一个基类对象。派生类对象转换为基类对象在需要的时候是可以自动转化的。

,,,,,,,其实,保护和私人派生后的派生类不是基类的子类,因为此派生类不能做基类所能做的所有事情。我们看看下面的代码

# include  & lt; iostream>,      {class  Person    公众:   人(){};才能,      void 才能吃(),{std:: cout  & lt; & lt;,“吃\ n";},   },,//公有继承,   class  PublicStudent : public  Person  {,   公众:   PublicStudent才能(),{},      void 才能;研究(),{std:: cout  & lt; & lt;,“研究\ n";},   },,//保护继承,   class  ProtectedStudent : protected  Person  {,   公众:   ProtectedStudent才能(),{},      void 才能;研究(),{std:: cout  & lt; & lt;,“研究\ n";},   },,//私有继承,   class  PrivateStudent : private  Person  {,   公众:   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

C或c++中公有继承,保护继承和私有继承的区别是什么