类之间的关系
在本次课程中,类与类之间的关系被分为三种:复合、继承、委托。
复合Composition
复合可以表示为has-a
class A has a class B.



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

左边通过指针指向右边,在左边需要右边的时候就可以通过指针来调用右边。
这样做的一个好处是,左边永远不用变,但是可以通过指针指向不同的右边来实现不同的功能
继承
继承可以表示为is-a


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

网友评论