C++的多态性表现为两种情况:一,不同对象接收到相同消息时产生不同的动作;二,相同对象接收到相同信息时产生不同的动作。
第一种情况,用虚函数实现,调用基类的指针或引用。是一种动态联编的方式。(1)在派生类中重新定义虚函数时,函数名,参数个数与类型及参数的顺序必须与基类中的函数完全相同。(2)虚函数在类外实现时不能在加virtual关键字了。(3)虚函数为了实现虚特性需要增加一些数据存储和执行指令的开销,所以虚函数的使用并不是越多越好。
第二种情况,即函数重载。是一种静态联编的方式。只有在作用域相同的情况下才能定义重载函数。作用域不同的函数不是重载函数。
第一种情况,用虚函数实现,调用基类的指针或引用。是一种动态联编的方式。(1)在派生类中重新定义虚函数时,函数名,参数个数与类型及参数的顺序必须与基类中的函数完全相同。(2)虚函数在类外实现时不能在加virtual关键字了。(3)虚函数为了实现虚特性需要增加一些数据存储和执行指令的开销,所以虚函数的使用并不是越多越好。
第二种情况,即函数重载。是一种静态联编的方式。只有在作用域相同的情况下才能定义重载函数。作用域不同的函数不是重载函数。