C++继承

  C++中面向对象的思想非常重要,也非常实用。类的继承特性是C++的一个非常重要的机制,它可以是使得在创建一个新类时,子类可以继承父类的数据成员和成员函数,仅需添加子类本身特有的成员。
  关于C++继承有很多概念和问题容易混淆,在此总结一下,仅供参考。

一、继承方式

注意:在继承时,若不说明继承方式,则默认为private继承。

1、公有继承
  其实公有继承不必多说,父类的public成员会继承到子类的public中,可以使用实例化的对象直接访问;父类的protected成员会继承到子类的protected中,可以能使用子类对象的成员函数或者父类的成员函数进行访问;而父类的private成员在子类中无法访问。

2、保护继承
  对于保护继承方式来说,父类的public成员和protected成员都会继承到子类的protected中,可以使用子类对象的成员函数进行访问;而父类的private成员在子类中依然无法访问。

3、私有继承
  对于私有继承方式来说,父类的public成员和protected成员都会继承到子类的private中,可以通过子类对象的成员函数进行访问;而父类的private成员在子类中依然无法访问。

二、隐藏

  在继承时,若父类和子类中定义了同名的成员,在实例化子类B的对象b时,父类中同名的成员将被隐藏,默认情况下访问的是子类中的同名成员;若要访问父类A中的同名成员函数fun(),则只能通过b.A::fun()的方式进行。

三、多继承

  若类C同时继承于类A和类B,则称为多继承。

//多继承
class C: public A, public B
{
    ...
};
四、多重继承

  若类B继承于类A,且类C继承于类B,则称为多重继承。

//多重继承
class A
{
    ...
};
class B: public A
{
    ...
};
class C: public B
{
    ...
};
五、虚继承

  在继承时,如果同时存在多继承和多重继承,就会出现菱形继承,如下:

class A
{
    ...
};

//多重继承
class B: public A
{
    ...
};
class C: public A
{
    ...
};

//多继承
class D: public B, public C
{
    ...
};

  那么此时,若实例化类D的对象,那么类D的对象中就会有两份来自于类A的成员,此时,需要在多重继承之前使用virtual关键字进行修饰,才能保证类D的对象中,只有一份来自于类A的成员,这种继承方式称为虚继承,如下:

//虚继承
class B: virtual public A
{
    ...
};
class C: virtual public B
{
    ...
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值