C++多态性:
简单理解“一个接口,多种方法”。“允许将派生类类型的指针赋值给基类类型的指针”
将基类指针指向派生类对象,通过基类指针调用派生类的成员函数来执行不同的操作。
C++多态性的实现方法:
C++多态性是通过虚函数实现的。虚函数允许子类重新定义基类的成员函数。
实现方法有两种:重载和重写(也称覆盖)
重载:简单理解就是在C++类中允许存在多个同名同返回值类型的函数,这些函数的参数列表不同、参数类型不同或者两者都不同。
重载不是多态。(在编译期间,编译器会根据函数不同的参数列表、参数类型,对同名函数生产一系列不同名称的预处理函数,来实现同名函数调用时的重载问题。也就是说它们的地址在编译期间就已经绑定了(早绑定),是静态的。)
重写(覆盖):虚函数实现的,在派生类中重新定义基类的做法。派生类中重新定义基类的虚函数后,基类指针根据赋值给它的不同子类派生类指针,动态的调用相应派生类的成员函数。它们的地址在编译期间不能被确定(编译期间派生类的虚函数地址无法确定),所以它们的地址是程序运行期间绑定的(晚绑定)。所以说重写才是真正意义上的多态。
BruceEckel:不要犯傻,如果它不是晚绑定,就不是多态。
治疗白癜风专科医院治疗白癜风多少钱