private继承与复合

private继承与复合

文章出自:blog.csdn.net/windows_nt

private继承定义:private继承而来的所有成员,在derived中都会变成private属性。
应用场合:当一个意欲成为derived class 者想访问一个意欲成为base class 者的protected成分,
或为了重新定义一或多个virtual 函数时可以用private继承。
知识点:
private继承意味只有实现部分被继承,接口部分应略去。
如果classes之间的继承关系是private,编译器不会自动将一个derived class对象转换为一个base class对象,
这样的转换会导致错误。请记住,private继承纯粹只是一种实现技术。

尽量用复合代替private继承。因为复合可避免virtual函数重定义。
事例:
class Widget : public Timer
{
private:
 virtual void onTick() const; //查看Widget的数据等等。
};

//复合实现
class Widget
{
private:
 class WidgetTimer : : public Timer
 {
 public:
  virtual void onTick() const; //查看Widget的数据等等。
 };
 WidgetTimer timer;
};

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值