组合、继承。委托(类与类之间的关系)
复合
queue类里有一个deque,那么他们的关系叫做复合。右上角的图表明复合的概念。上图的特例表明,queue中的功能都是通过调用c进行实现(adapter)。
复合关系下的构造和析构
构造由内到外
析构由外到内
委托(引用复合)
通过指针进行指向。与复合不同的点在于,类和包含的不一定同时存在。
继承
黄色这一行代表两个类具有继承关系,分三种继承(public private protected)。
上图的继承方式,父类的数据被完全继承。
子类在外,父类在内。子类的对象有父类的成分。父类的析构函数必须是虚函数,否则会出现未定义操作。
虚函数与多态
在函数前加virtual,则为虚函数。函数的继承,继承的是调用权。
如果不希望子类重新定义,则不加virtual。
虚函数:希望子类重新定义,已有默认定义。
纯虚函数:希望子类重新定义,无默认定义。
继承加复合关系下的构造和析构
Derived 的构造函数首先调用 Base 的 default 构造函数,然后调用 Component 的 default 构造函数,然后才执行自己的。
Derived 的析构函数首先执行自己,然后调用 Component 的析构函数,然后调用 Base 的析构函数。
先执行父类构造函数,再执行复合类的构造函数,最后执行本类的构造函数。而析构次序反之。