第三周笔记 c++ Boolan

本周主要学习了c++中类与类之间的关系,主要有:

1)继承(Inheritance);

2)复合(Composition);

3)委托(Delegation);

一、复合:

类 queue 里有 deque ,其中类 queue 为容器,其拥有了 deque,该种关系即为复合,表示 has-a。其两者一起出现。

从内存角度看待该种关系:

复合关系下的构造函数和析构函数:

 

 构造函数由内而外:

Container 的构造函数首先调用Component的默认构造函数,然后才执行自己。具体过程如下:注意:调用Component的默认构造函数的过程将由编译器自动完成,但若想调用Component的非默认构造函数,则需要自己添加。

Container::Container(...) : Component()  { ... }; 

析构由外而内:

Container 的析构函数首先执行自己,然后才调用Component 的析构函数,具体过程如下:

Container::~Container(...) { ...~Component() };

二、委托(用指针相连)

类 String 有一个指针指向StringRed,该种关系即为委托。 类String 可以在任何时间调用StringRed,将任务委托给StringRed。两者不同步,左边先创建,等到需要右边时才创建右边处出来。

三、继承(is a)

c++中有三种继承方式:private 继承、protected 继承和 public 继承,其中最重要的为public 继承。其基本语法如下图所示。

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

构造由内而外:

子类的构造函数首先调用父类的默认构造函数,然后才执行自己。

析构由外而内:

子类的析构函数首先执行自己,然后才调用父类的析构函数。

继承搭配虚函数的使用:

1)非虚函数:父类中已有定义,子类不能重新定义它。

2)虚函数:父类中已有默认的定义,但子类需要时仍可重新定义。

3)父类中无定义,子类使用时一定要重新定义。

一个继承搭配虚函数使用的例子:

四、委托+继承的广泛应用

1)观察者模式

2)组合模式

典型应用场景 : windows的文件夹与文件系统,文件夹中又有文件

3)原型模式

应用场景 :原型模式是通过已经存在的对象的接口快速方便的创建新的对象。

posted @ 2018-01-21 22:16  神猪学代码  阅读(124)  评论(0编辑  收藏  举报