继承与派生

知识点:
1、通过继承可以自动地为一个类提供来自另一个类的成员函数和数据成员。
2、派生类的声明必须遵循3个原则
1)C++允许从一个类或多个类中派生一个类出来,派生类继承基类的所有成员;
2)派生类可以改变继承过来的成员的访问权限,方法是在基类的声明前加上存取说明符
3)合法的存取说明符是public、protected和private。

3、私有派生、保护派生与共有派生
3.1私有派生
通过私有派生,派生类从基类继承来的共有成员与保护成员都将变为派生类的私有成员,这些成员只能被派生类的成员函数和友元函数访问,需要重点说明的是,基类的私有成员经过私有派生后继续保持其基类的私有成员身份,无法被派生类访问。

class rectangle:private line // 声明一个私有派生类
{};

3.2保护派生
由保护派生得到的派生类,它从基类继承的共有和保护成员都将变为派生类的保护成员。基类的私有成员经过保护派生后继续保持其基类的私有成员身份,派生类依然无法访问。

class rectangle:protected line // 声明一个保护派生类
{};

3.3共有派生
由共有派生得到的派生类,它从基类继承的成员都将维持原有的访问控制特征,派生类从基类继承的共有成员在派生类仍然是共有成员,保护成员仍然是保护成员,而基类的私有成员经过派生后继续保持其基类的私有成员身份,依然无法被派生类访问。

class rectangle:public line // 声明一个共有派生类
{};

示例

//基类
class line
{
private:
    int length;

protected:
    void setlength(int n)
    {
        length = n;
    }

public:
    int getlength(void)
    {
        return length;
    }
};

// 私有有派生
class rectangle:private line // 声明一个私有派生类
{
    int width;

public:
    void setlw(int m, int n)
    {
        setlength(m);
        width = n;
    }

    int area(void)
    {
        return length*width; // error! 派生类的成员函数不能访问基类的私有成员
    }
};

注意:
不管是何种派生,基类的private成员永远都不能被其派生类直接访问,但可以通过public和protected成员函数访问。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值