关于C++继承中的几个问题

(1)继承方式所造成的访问性问题

C++中基类的继承方式的public,protected,private这三种方式。但是派生类在继承基类时,除了基类的构造函数和析构函数之外,其它的成员均继承,这与继承的方式是无关的。只是派生类对于基类中成员的访问方式与继承方式是相关的。

public:

派生类公有继承基类,则基类中的成员的访问控制权限在派生类中不发生变化。原本在基类中是公有的,在派生类中仍然是公有的,以此类推。但是基类中的私有成员,在派生类中则不能通过对象直接访问,而要通过相应的非私有方法来访问。派生类中的所有非公有成员,在类体外均不能够直接访问。
protected:

派生类保护继承基类,则基类中的成员的访问控制权限在派生类中发生了变化。原本在基类中是公有的,在派生类中成为了保护的,其它的不变。同样,但是基类中的私有成员,在派生类中则不能通过对象直接访问,而要通过相应的非私有方法来访问。派生类中的所有非公有成员,在类体外均不能够直接访问。

private:

派生类私有继承基类,则基类中的成员的访问控制权限在派生类中发生了变化。原本在基类中是公有的和保护的,在派生类中均变为私有的。同样,但是基类中的私有成员,在派生类中则不能通过对象直接访问,而要通过相应的非私有方法来访问。派生类中的所有非公有成员,在类体外均不能够直接访问。

(2)虚基类的几点注意事项

     虚基类的产生是为了解决继承过程中所造成的二义性问题。

    当某个派生类继承若干个基类,这几个基类中含有相同的成员。或者是这几个基类又继承了共同的一个基类,这样就是在派生类中对某个成员的使用产生二义性,不知道应该调用哪个基类中的该成员。因此引入了虚函数来解决这一问题。当一个类被声明为虚基类,则该类只会被继承一次,无论其被多少个派生类继承过。

    要想让某个派生类继承的基类为虚基类,则在继承时就要为virtual关键字标识该基类,则凡是继承了该基类的派生类均需要标识出来。

 

(3)继承所带来的构造函数问题

    构造函数和析构函数是无法继承,因此在派生类中需要自己对基类的构造函数进行调用。与此同时,对于派生类中的基类构造函数和对象成员,都需要在构造函数的初始化列表中进行初始化。初始化的顺序是最先是虚基类,接着是基类,后对象成员,最后是派生类的成员。对于含有多个基类和对象成员,则分别根据基类和对象的声明时的顺序依次初始化。

 

 

转载于:https://www.cnblogs.com/huangli1989/p/3373457.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值