Boolan c++面向对象高级编程 第三周笔记

继承&复合&委托

复合

template<class T,class sequence=deque<T> >
class queue{
...
protected:
    seqence c;
public:
    //以下完全利用c的操作函数完成
    bool empty() const{return c.empty();}
    ...
};

在上文中 复合表示的关系为has-a
queue中的内容全部由deque来实现
由于复合表示的是一个has-a的关系,所以其大小为其内部各部分之和。

复合关系下的构造和析构

在构造时,复合关系的构造是由内而外,先执行内部构造函数,再执行外部。
而析构时正好相反,析构先执行自己,再执行内部的析构函数。
(Base class 的dtor必须是virtual,否则会出现undefined behavior)

委托

clipboard.png
这种利用另一个类的指针调用实现功能调用叫委托。

继承

继承表示is a

clipboard.png

继承可以继承父类的成员

clipboard.png
继承关系下的构造函数首先调用Base的的default构造函数,然后才执行自己。
继承关系下的析构函数首先析构自己,然后才调用base的析构函数。

虚函数&多态

  1. 非虚函数是不希望子类重新定义它
  2. 虚函数是希望子类去重新定义它,并且你对它已经有了默认定义
  3. 纯虚函数是你希望子类一定要重新定义它,你对它没有默认定义。

继承+复合下的构造先后问题

clipboard.png

委托+继承

clipboard.png

clipboard.png

观察者模式
1,A类有委托容器。
2,A类的容器包含一个可以继承的B类。
3,B类可扩展。
4,A类可控制,让B类有需求的来注册,注销。
Composite
1,B类有个容器,可以放左边,可以放右边。
2,A类做基类,让左右两边都继承。
3,B类的容器指针指向A类,B类Add控制放左还是放右。

clipboard.png

Prototype(Design Patterns Explained Simply)
1,A类创建未知的子类,
2,让B类创建静态自己,
3,B类构造是private,原型放到A类的容器(add),
4, B类clone来实现挂到A类框架,扩展A类(框架)使用。

clipboard.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值