虚继承是什么意思_c++ private继承讨论

不管你是c++老鸟还是菜鸟,在实际开发中很少有人用到private继承,那么你了解private继承吗?

下面是几点说明:

1.如果class之间是私有继承,那么编译器不会自动将一个派生类对象转换为基类对象。

2.私有继承而来的所有基类成员,在派生类中都是私有的,纵使基类中他们是public属性。

3.再来理解下私有的概念,私有的概念是只有本类的方法可以调用,通过对象是看不见这些私有属性的。

4.私有继承的用意是我们将使用基类的某些方法的实现,如果基类的方法是虚函数,我们的设计目的也不是为了重写这个虚函。所以private继承意味着是根据某物实现出。

5.什么时候用private继承?

在需要空白基类的情况下,比如在继承一个属性类比如Noncopyable,而且在客户非常在意空间的使用的情况下,可以采用private继承。

6.说下空白基类:

正常情况下 class A{};这样一个没有任何数据成员的类是不需要使用任何空间的,但由于c++技术上的理由,c++裁定凡是独立对象都必须有非零大小,所以sizeof(A)大小为1,编译器为你插入了一个字节大小的空间占用。但是 class B:private A {int b}; 这样子私有继承一个空白基类,编译器在编译的时候会有一个空白基类优化,sizeof(B) 是4,这样子就不会有1字节空间的浪费了。

3273f69a9fdc63cd57a9ab0a470c1ebf.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值