引入虚函数的目的就是为了让指向派生类对象的基类指针可以调用覆盖了基类虚方法的那个虚方法。
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父类指针就可以根据当前赋值给它的子对象的特性以不同的方式运作。
多态性可以简单地概括为“一个接口,多种方法”。同一个消息,不同的对象会以不同的行为作为响应。
继承是实现代码的可重用性,可以直接调用父类的函数。
多态是实现接口的可重用性,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。动态多态仅仅实现了接口的标准化,规定了继承类必须按规则行事,
多态分两种多态
一种是静态多态,就是用模板具体化和函数重载解析来实现
一种是动态多态,就是用虚函数机制来实现
所谓多态,字面意思就是 多种状态,使用统一的接口来实现不同的操作,大家熟知的使用虚函数来实现的多态叫运行时的多态,此外还有静态多态,就是在编译时候就已经确立了状态关系,此外,还流传着两个多态的说法,一说是 函数多态,一说是 宏多态。
在C++中主要使用继承机制和虚函数来实现,通过基类的指针或者引用,指向子类对象,来调用虚函数,这样会导致相应对象的虚函数被调用,因为我们统一使用的基类指针或引用,所以在编译时候不能确定调用的是那个虚函数,或许虚函数最方便的地方时在处理一个集合中,各个对象不同的时候。