C++私有继承有什么用、怎么用

第一次学私有继承的时候非常迷惑,感觉既然都是不可见,不就是说啥都干不了吗?然后这两天了解到了这方面的知识,总结如下。

有什么用

最大的用处是通过“继承”的纵向逻辑建立了一种“has-a”逻辑。更直白点说,就是从基类继承来的成员,具有对内可用但是对外不可见的特点,这和组合的逻辑很像。所以说,在私有继承的语境下,可以把基类看成派生类的数据成员对象。

下面回答如何使用。

初始化

注:以下代码大量简化,只是为了说明,请不要直接套用。

class father1;
class father2;
class son:private father1, private father2{...}
//使用继承的逻辑初始化。如果不是继承,可能是name(p1), year(p2)等,其中name和year是对象,为派生类的数据成员
son::son(p1,p2):father1(p1),father2(p2){}
//p1是father1构造函数需要的参数,p2同理

访问基类的方法

私有继承通过使用类名和作用域解析运算符来调用基类的方法。
如:father1::function1()

访问基类对象

如果直接要使用整个基类对象本身怎么做呢?方法是使用强制转换。因为是继承,所以可以这么做。
如:(const father1&) *this,这个*this指的是派生类。

访问基类友元函数

跟访问基类对象的方法一样,即强制转换,不再赘述。
注:题外话,很多时候即使是共有继承,仍然需要强制转换一下,否则容易造成递归调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值