C++之继承

从面向对象的程序设计的观点来看,继承表达的是对象类之间的相互关系。这种关系使得某类对象可以继承另外一类对象的特征和能力。如果一类对象继承了另一类对象的特征和能力,这个类就叫做所继承类的派生类(Derived类),被继承的类就叫做基类(Base类)。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性(包括函数),并可向其中加入属于自己的一些特征。

继承机制是面系对象程序设计使得代码可以复用的最重要的手段,它允许程序员在保持原有类的基础上扩展,增加功能。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

1.继承的基本概念:

继承格式:

    class 派生类名 : 继承方式 基类名
    {
        <派生类的数据和成员函数>
    };

其中:
继承方式即为继承权限,用来表示基类成员在派生类中的可见性

继承方式&访问限定符:

继承方式分为三种:public继承、protected继承、private继承

类成员访问限定符也分为三种:public(公有)、protected(保护)、private(私有)
继承方式

派生类的继承访问属性:

1.以公有方式继承:

class Base
{
public:
    void SetValue(int pri, int pro, int pub)
    {
        _pri = pri;
        _pro = pro;
        _pub = pub;
    }
    void ShowValue()
    {
        cout << "_pri =" << _pri << endl;
        cout << "_pro =" << _pro << endl;
        cout << "_pub =" << _pub << endl;
    }
private:
    int _pri;
protected:
    int _pro;
public:
    int _pub;
};

class Derived : public Base
{
public:
    void SetValueD(int pri,int pro,int pub)
    {
        _pro = 10;//保护成员变量,派生类可以直接访问,在类外不能访问
        //_pri = 20;//私有成员变量,派生类不能直接访问,在类外不能访问
        SetValue(pri,pro,pub);//基类中的成员函数也继承下来了
    }
private:
    int _priD;
protected:
    int _proD;
public:
    int _pubD;
};

//判断公有继承方式下基类保护成员继承之后权限是否发生变化:再派生一层,如果继承下来是保护则下一层派生类继续可以直接访问,如果访问权限改变为私有成员,则下一层派生类不能直接访问。
class C :public Derived
{
    void Funtest()
    {
        _pro = 10;//证明保护成员继承下来之后访问权限仍是保护
    }
};

int main()
{
    cout << sizeof(Derived) << endl;//说明基类成员变量已经继承下来了
    Derived d;
    d._pub = 10; //公有成员变量,派生类能直接访问,在类外也能访问
    return 0;
} 

上述代码说明:在派生类继承基类时,将基类的成员变量和成员函数都继承下来了,并且以public方式继承后,基类的public成员、protected成员以及private成员访问权限都不变。

1.以保护方式继承:

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值