C++继承:公有,私有,保护

原创 2016年06月01日 16:28:50

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。

公有继承(public)

公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类所访问。

私有继承(private)

私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。

保护继承(protected)

保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

public protected private
public继承 public protected 不可见
private继承 private private 不可见
protected继承 protected protected 不可见

class A
    {
    public:
        int publicA;
    protected:
        int protectedA;
    private:
        int privateA;
    };

    class B:public A //基类A的派生类B(public继承)
    {
    public:
        void funct()
        {
            int b;
            b=publicA;    //ok:基类的public成员在派生类中为public成员
            b=protectedA; //ok:基类的protected成员在派生类中为protected成员
            //b=privateA;   //error:基类的private成员在派生类中是不可见的

        }
    };

    class C:private A
    {
    public:
        void funct()
        {
            int c;
            c=publicA;    //ok:基类的public成员在派生类中为private成员
            c=protectedA; //ok:基类的protected成员在派生类中为private成员
            //c=privateA;   //error:基类的private成员在派生类中是不可见的
        }
    };

    class D:public C
    {
    public:
        void funct()
        {
            int d;
            //d=publicA;    //error:类C由类A private继承得到,所以publicA已经成为C的private成员
            //d=protectedA; //error:类C由类A private继承得到,所以protectedA已经成为C的private成员
            //d=privateA;   //error:基类的private成员在派生类中是不可见的
        }
    };
int a;
    B objB;

    a = objB.publicA;
    //a = objB.protectedA;//error:基类的保护成员在派生类中为保护成员,对对象不可见
    //a = objB.privateA;//error:基类中私有成员在派生类中是不可见的,对对象不可见

    C objC;
    //a=objC.publicA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
    //a=objC.protectedA; //error:基类的保护成员在派生类中为私有成员,对对象不可见
    //a=objC.privateA;    //error:基类的公共成员在派生类中为私有成员,对对象不可见
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++继承:公有,私有,保护

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员...

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

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,...
  • PZ0605
  • PZ0605
  • 2015年01月22日 14:22
  • 570

C++继承:公有,私有,保护

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生...

C++继承类型:公有、保护、私有、虚拟

公有继承(public)、保护继承(protected)、私有继承(private)是常用的三种继承方式,除了这些继承类型外还有一种虚拟继承。...

C++基类和派生类私有、保护、公有成员访问控制以及动态绑定、三种继承

1.类的一个特征就是封装,public和private作用就是实现这一目的。所以: 用户代码(类外)可以访问public成员而不能访问private成员;private成员只能由类成员(类内)和友元...

C++继承:公有 私有 保护

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生...
  • Raid_9
  • Raid_9
  • 2014年08月11日 11:49
  • 189

公有、私有和受保护的继承--《C++ primer》笔记

protectedInheritance.cpp 间接继承和书本描述不一致,书上说因为第一重继承变private,第二重继承才无法访问Base::i~是private,现实是提示Base::i是pr...

C++继承、公有,私有,保护

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员...

C++继承:公有,私有,保护

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生...

C语言拾遗:公有、私有和受保护的继承--《C++ primer》笔记

protectedInheritance.cpp 间接继承和书本描述不一致,书上说因为第一重继承变private,第二重继承才无法访问Base::i~是private,现实是提示Base::i是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++继承:公有,私有,保护
举报原因:
原因补充:

(最多只允许输入30个字)