虚函数 和多态
继承 搭配 虚函数
成员函数前 加virtual
函数的继承 继承的是调用权。
虚函数:希望对子类 重新定义(override重写),且已有默认定义
纯虚函数:一定要重新定义。纯虚函数是可以有定义的。
相关设计
委托与继承的设计模式
功能最强大的一种。
关系:
- 这是一种Observer的设计模式,适用于如有一份文件,多个窗口查看或者一份数据,有多种视图显示;;
- 示例中Subject是数据类,Observer是显示类,可以被多个observer继承实现不同方式的查看。
这种解法叫做 composite:
注意点:
a、这是一种Composite的设计模式,要使Composite类中容器能容纳左边和右边的数据,所以设计一个Component的父类;
b、容器中只能放指针对象,因为指针的大小相同;
在ui设计中,数据改变,窗口展示也改变。
所以subject类要提供一个注册跟注销的函数。
attach就是一个注册的函数,将子类对象放入。
还应该有个notify函数,将内容里的所有观察者都遍历。里面调用观察者的update来更新ui
Prototype(原型)
注意点:
a、这是Prototype的设计模式,主要适用于现在创建未来的class对象,因不清楚未来类的名字;
b、未来对象是通过原型来创建的(必须运用事先搭好的框架),首先创建静态的对象,然后调用默认构造函数来通过原型创建对象。
c、类中的静态变量要在类外部定义。
要去创造未来的子类对象。。
子类你们自己创建自己。只要你们创建的东西我父类看得到。
上图中。下划线表示的 是 静态对象,先写的变量名,后写的类型名。
负号 - 代表private,正号+代表public,#代表protected。
子类构造函数设计为私有的。子类构造函数里调用父类的addPrototype,将子类对象指针放到父类里面去。
子类重写的clone()要做的事,是new一个自己。
如果没有原型的话,就没有办法通过对象调用clone元素。