C++继承与派生

类的继承,是新的类从已有类那里得到已有的特性,而已有类称为基类,新类称为派生类。类的继承方式分为public (公有继承)、protected(保护继承)、private(私有继承)三种。不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。

公有继承(public):当类的继承方式为公有继承时,基类的公有成员和保护成员在派生类中不变,基类的私有成员不能直接被派生类访问。
保护继承(protected):当类的继承方式为保护继承时,基类的公有成员和保护成员将成为派生类的保护成员。
私有继承(private):当类的继承方式为私有继承时,基类的公有成员和保护成员将成为派生类的私有成员。

访问属性\基类成员publicprotectedprivate
同一个类yesyesyes
派生类中新增成员yesyesno
派生类外部(非类族内成员)yesnono

总结:
1、无论什么继承,基类的私有成员都不可直接访问。
2、无论什么继承,基类的公有接口都将成为派生类的内部接口。
3、当类的继承方式为XX继承时,基类的公有成员和XX成员将成为派生类的XX成员,但是公有继承中基类的公有和保护成员访问属性在派生类中不变。
4、类外部只能访问到派生类和从基类继承下来的公有成员,想访问保护和私有成员还是算了吧。
5、最后也是最重要的一点,我们几乎不使用protected、private继承,一般只用public继承,不想搞得太深的小伙伴们只需记住public继承就可以了。

随便写点代码让大家印象深刻一些:

#include <iostream>
using namespace std; 
class A
{  
    public:     
        void a(); 
        int a_1; 
    protected:
        int a_2;  
    private:  
        int a_3; 
};  

class B :public A
{  
    public: 
        void b1(){cout<<"a_1="<<++a_1<<endl;}
        void b2(){cout<<"a_2="<<++a_2<<endl;} 
};  

int main()
{
    B b;
    b.b1();
    b.b2();
    return 0;
}

很容易看出a_1a_2都已经+1,因为这是公有继承,基类的public和protected变成了派生类的public和protected。

继承之后的B类其实是这样的:

class B :public A
{  
    public: 
        void a(); 
        void b1(){cout<<"a_1="<<++a_1<<endl;}
        void b2(){cout<<"a_2="<<++a_2<<endl;} 
        int a_1; 
    protected:
        int a_2;
};
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜亚轲

你花钱的样子真帅

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值