C++ OOP设计基础

Abstract

最近在看侯捷C++面向对象高级开发(上)。有兴趣的小伙伴可以去看看,讲的很好。侯捷老师介绍了c++ OOP设计的三板斧:
① Inheritance继承
② Composition 复合
③ Delegation 委托


Composition 复合

复合表示的是has-a.侯捷老师举了一个STL中的例子:
下面的Code来自Visual Studio:queue.h,和侯捷老师给的代码差不多
在这里插入图片描述
队列queue有一个数据元素是deque。queue has a deque。
用图表示两个类的关系是:
在这里插入图片描述
抽象出来:就是下图所示:
在这里插入图片描述
对与Composition关系来所:
构造函数:
Container的构造函数首先调用Component的default的构造函数,然后才执行自己的。
析构函数:
Container的析构函数首先执行自己,然后才调用component的析构函数。
其实这也很符合我们的期望。就好像洋葱一样:首先生成的是内部的皮,再生成外部的皮。剥洋葱的时候:是先剥外面的皮,再剥洋葱里面的皮。
在这里插入图片描述



Delegation 委托 (Composition by reference)

正如别名Composition by reference,这就是在Container里加一个Component的引用(指针).
这样做和Composition有什么不同呢?
Composition中的Container和Component的生命周期是一样的,也就是Container和Component是同时创建,同时析构。
但是Delegation中的生命周期是不同的
在这里插入图片描述


Inheritance 继承 is-a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值