Boolan C++面向对象高级编程(上)第三周

类之间的关系

在本次课程中,类与类之间的关系被分为三种:复合、继承、委托。

复合Composition

复合可以表示为has-a
class A has a class B.

Boolan C++面向对象高级编程(上)第三周_第1张图片
Boolan C++面向对象高级编程(上)第三周_第2张图片
Boolan C++面向对象高级编程(上)第三周_第3张图片

对于复合,各自负责各自的构造和析构就可以,构造Container时,需要先构造Component,这一步是由编译器来帮我们实现的。需要注意的是编译器帮我们构造Component时,采用的是默认的构造函数,若默认构造函数不是我们想要的时候,就需要自己按照上图的格式,利用构造Container时的初值列来先完成Component的构造

委托Delegation (Composition by reference)

Boolan C++面向对象高级编程(上)第三周_第4张图片

左边通过指针指向右边,在左边需要右边的时候就可以通过指针来调用右边。

这样做的一个好处是,左边永远不用变,但是可以通过指针指向不同的右边来实现不同的功能

继承

继承可以表示为is-a

Boolan C++面向对象高级编程(上)第三周_第5张图片
Boolan C++面向对象高级编程(上)第三周_第6张图片

对于构造与析构,继承与复合一致。
先调用父类的构造函数,再执行自己的构造函数。先执行自己的析构函数,再调用父类的析构函数。
注意!!!!!
父类的析构函数必须是虚函数!

虚函数

Boolan C++面向对象高级编程(上)第三周_第7张图片

你可能感兴趣的:(Boolan C++面向对象高级编程(上)第三周)