多态
概念:
run-time binding(函数名和函数入口点的绑定发生在程序运行时刻)
complie-time binding(程序再编译时进行函数名和函数入口的绑定)
多态的本质:run-time binding
多态的条件:
1.必须有继承
2.子类要把虚函数重写(override)(派生类的virtual可以省略)
3.父类类型的指针或引用(不能是对象),要用它调用虚函数
多态的好处:灵活性
析构中的多态:
析构函数也要加virtual,不然析构时只会调用基类的析构函数,而不会调用派生类的析构函数
抽象类(一般用在多态)
class ABC{
public:
virtual void open() = 0; //纯虚函数
};
抽象类不能实例化,但可以有指针或引用
子类继承以后要把父类全部重写,不然子类也还是一个抽象类