多态
多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为。
就是说,有一对继承关系的两个类,这两个类里面都有一个函数且名字、参数、返回值均相同,然后我们通过调用函数来实现不同类对象完成不同的事件。
虚函数
在main函数中,如果有父类或者子类的实例对象,就需要有父类的虚函数的实现;在main函数中,如果没有父类或者子类的实例对象,可以不实现父类的虚函数。
虚函数的目的是为了(在继承中)实现多态 。每一个类都有一个虚函数表(v-table),每个对象都有一个虚函数指针(vptr),指向虚函数表。当子类对象被创建后,虚函数指针就会指向子类中覆盖的虚函数。当使用基类指针时,虚函数指针将根据基类指针指向的对象的实际类型,来指向正确的函数。
纯虚函数
子类必须实现该函数(接口)
有纯虚函数的类叫做抽象类,不能生成实例对象
抽象类就像一个规范一样,like 接口(Interface) in Java
虚函数与纯虚函数
定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。