码迷,mamicode.com
首页 > 编程语言 > 详细

第三周笔记 c++ Boolan

时间:2018-01-22 00:06:27      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:指针   red   container   观察者模式   容器   idt   原型   gre   string   

本周主要学习了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)原型模式

技术分享图片

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

第三周笔记 c++ Boolan

标签:指针   red   container   观察者模式   容器   idt   原型   gre   string   

原文地址:https://www.cnblogs.com/memory-niu/p/8325839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!