1. 何为多态
多态是面向对象编程语言中的一种语言特性;多态意指一引用对象随着被引用对象的不同而表现出不同的行为特征。C++中,引用对象可以是一个指针类型,或者引用类型。
2. 多态的作用
多态应用于类层次结构中,并且引用对象使用基类类型;要使用多态还需要基类中有虚函数。
那为什么要使用多态呢? 一般,我们在使用基类类型引用时,不需要知道该引用指向类层次结构中具体哪一个类的实例,而只需要使用该类层次结构中的共有特征,也即基类所具有的特征(行为或状态),并且能够表现出所被引用对象的具体行为。这样,就可以忽略该类层次中的派生细节问题;这样的代码具有很好的可重用性和可维护性。
3. 示例代码如下:
程序运行输入如下:
4. 反汇编说明多态的实现
下面通过VS2008调试,反汇编上面代码。
首先,列出draw_shape函数的汇编代码如下:
从上面的汇编代码可以看出,引用类型变量在汇编层次和指针完全一样;但在C++语言层次,应该搞清楚引用类型和指针类型的区别:
- 引用类型变量在定义是就必须初始化,并且被引用对象必须存在,也即不能为NULL;
- 引用类型变量一经初始化,就不能再引用其他变量。
上面的代码给出了对虚函数表的直接操作来访问函数,以及对类对象私有成员的直接操作。
PS:仅供交流学习之用;MSN:chryice@hotmail.com