多态性(polymorphism)是指允许通一个函数(或是操作符)有不同版本,对于不同的对象执行不同的版本。c++支持一下两种多态
(1)编译时的多态性,表现为函数名(或操作符)的重载。
(2)运行时的多态性,表现为派生类和虚函数来实现。
函数名重载:编译器能够比较具有同名函数的特征,通过识别实参的数目和每个实参的类型,来标识适用于一个特定调用的哪一个版本。
操作符重载:可用同一个名字定义多种操作,这种能力叫做操作符重载。
虚函数和动态绑定
一个虚函数是一个在基类中被声明为“virtual”,并在一个或多个派生类中被重新定义的函数。如果在基类声明中,在一个函数的函数特征之前加一个关键字“virtual”,则编译器将建立一个可由运行环境解释的数据结构,并由程序执行时而不是编译时由运行环境来执行对这个函数的调用。
一个抽象类必须作为基类而被其他类继承,抽象类自己不能生成实例,就是说不能由类生成对象,因为抽象类中至少有一个函数没有实现。如果一个基类中的某个函数声明为纯虚函数,则该基类的任何派生类都必须定义自己的实现。
“virtural”指定实际调用的成员函数将是在运行时动态调用确定的,而不是在编译时确定的。这种做法叫做动态绑定(dynamic binding)。动态绑定在编译性面向对象语言中是为了支持所包含的多态性。
原文地址:http://www.cnblogs.com/newpanderking/p/3836955.html