9.组合与继承

博客介绍了程序设计中的复合、委托和继承关系。复合表示has - a,queue与deque是复合关系,构造由内而外、析构由外而内;委托如String与StringRep,用指针连接,生命周期不同步;继承用空心三角形表示,public继承表达is - a,构造和析构也是由内而外、由外而内,父类析构函数须为virtual。

 

  • 复合 表示 has-a

 

 

 将模板替换进来

 

 

如此我们可以说,queue里面有deque,二者是复合关系

看图来表示 黑色菱形 表示里面有东西

queue拥有c之后,就可以使用c的函数和数据

这同时也是 Adapter适配器模式的思想

 

  • 从内存的角度理解组合

 

 

          queue拥有c后 也即拥有c的全部内存空间

 

  • 复合下的构造和析构

 

 

构造由内而外 析构由外而内

 

  • 委托关系

 

 

String中用一个指针 指向StringRep,即为委托关系,画图就是空心菱形,表示指针

二者的生命周期不同步,StringRep只有在用到的时候 才会创建

StringRep可以由多个类共享,当一个类要改变StringRep内容的时候,系统提供一份

StringRep的副本让String改,这叫做copy on write

 

  • 继承

 

 

继承关系,从子类往父类,画一个空心三角形,子类中的T表示模板

使用public继承,是表达 is-a ,是一种 的关系

父类的数据 完整的被子类继承

 

  • 继承关系下的构造和析构

 

 

从内存的角度去看,继承就是子类的对象中有父类的成分

构造由内而外 析构由外而内 父类的析构函数必须为 virtual

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值