公有成员 私有成员 保护成员区别

先用一个继承列子具体讲解一下吧~~

include 

#include 
using namespace std;

#define PI 3.14

class base  //基类base
{
private:

    int v1;           

public:
    int v2;
    base(int a=0,int b=0,int c=0)
    {
        v1=a;
        v2=b;
        v5=c;
    }
    int ares()
    {
        return v1*v2;
    }
protected:
int v5;
};

class push :public base
{
private:
    int v3;
public:
    int v4;
    push(){}
    push(int a,int b)
    {
        v3=a;
        v4=b;
    }

    void fun()
    {
      //  cout <


 公有和私有继承


 以上面的 base 和 push 为例


 如果 push为公有继承


 那么 在 push 类内部和外部 都可以访问 base 的公有成员,
 而 对于base 的私有成员 ,push类在的内部和外部都不能访问;


 如果 push为私有继承


 那么 在 push 类只能在 内部访问 base的公有成员 ,
 那么更不用说 对于base 的私有成员 ,push类在的内部和外部都不能访问;


 因此 私有继承 和公有继承 的区别 在于 基类(base)的公有成员能否在派生类(push)的外部访问


*/


在保护继承中,基类的公有成员和保护成员都以保护成员的身份出现在派生类中,而基类的私有成员不可直接访问。
也就是所,在保护继承下,基类的保护成员私有成员能在派生类的类中访问,而不能在访问。


比较私有继承和保护继承可以看出,实际上在直接派生时(只有做了一个派生),二者的区别就出现了,假设base派生出了push类,
而push类又派生出了 push++ 类。在私有继承中,base 中的保护成员和公有成员在push中都是私有成员,push++不能访问base中的任何成员
而在保护继承中,base 中的保护成员和公有成员在push中都是保护成员,push++可以访问base 中的保护成员和公有成员,
但是在push和push++类外都不能访问,



 

给三者排个序 private > protected >public 

以下是基类各类成员在各类派生类的变化情况

公有成员 私有成员 保护成员区别_第1张图片#i

你可能感兴趣的:(公有成员 私有成员 保护成员区别)