多态,虚函数,和纯虚函数:
多态指的是指令的多种形态,当同一个指令被调用时,它能根据参数、环境的不同做出相应的操作,这种情况叫做多态,根据确定执行哪个操作的最终时间,将多态分为编译时多态、运行时多态
一、编译时多态:
当调用重载函数时,编译器会根据函数参数的类型、个数等,在编译器就能确定执行的是哪个版本的重载函数,这个就叫做编译时多态,模板技术也是。
二、运行时多态:
当子类覆盖了父类的同名函数,然后用父类指针或引用指向子类对象,并访问虚函数时,它可以根据父类指向那个子类对象,来调用该子类的同名函数,也就是说具体调用的是哪个版本的子类同名函数取决于父类指针或引用的目标,这个如果需要再运行时才能确定,就叫做运行时多态。
构成运行时多态的条件
1、父子类之间有覆盖关系
2、子类是以public方式继承的
3、通过父类指针或引用调用虚函数
什么是虚函数
当该成员函数前加virtual关键词后,这样函数就称为虚函数,允许在派生类中对基类的虚函数重新定义
构造函数不能是虚函数。
什么是纯虚函数
纯虚函数的格式:
virtual 返回值 函数名(参数列表) =0;