C++拾遗:多态性
2014-06-18 17:38
246 查看
参考资料:http://hi.baidu.com/smurfyan/item/2c723e89c61d7ece99255fc3
大部分转的,作了少量编辑,补充点内容。
在面向对象的概念中,多态性是指不同对象接收到相同消息时,根据对象类的不同产生不同的动作。多态性提供了同一个接口可以用多种方法进行调用的机制,从而可以通过相同的接口访问不同的函数。具体地说,就是同一个函数名称,作用在不同的对象上将产生不同的操作。
多态性提供了把接口与实现分开的另一种方法,提高了代码的组织性和可读性,更重要的是提高了软件的可扩充性。
多态的三大特征: 要有重写,要有继承,父类指向子类。
重写与父类指向子类通过虚函数实现,是为了实现接口的重用。
继承是为了实现代码的重用。
2、编译时的多态性和运行时的多态性
首先,一般提到多态,我们说的是运行时多态,而不是指编译时多态。严格来说,只有运行时多态才叫多态,函数重载与运算符重载不是面向对象的,所以不能称为多态,模版属于范型,也不包含于面向对象。
由静态联编支持的多态性称为编译时的多态性或静态多态性,也就是说,确定同名操作的具体操作对象的过程是在编译过程中完成的。
▲C++用函数重载和运算符重载来实现编译时的多态性。模版也属于编译时多态。
由动态联编支持的多态性称为运行时的多态性或动态多态性,也就是说,确定同名操作的具体操作对象的过程是在运行过程中完成的。
▲C++用继承和虚函数来实现运行时的多态性。
重载:同名函数不同参数。不属于面向对象,在编译期实现,通过编译器将同名函数名变换而实现出多个不同名的函数。
重写:也称覆盖,子类中对于父类同名同参数函数的完全重新编写。属于面向对象,在运行期实现,通过虚函数实现,主要是为了实现接口的重用,将相同接口对应于不同的类型实现不同的方法。重写要求函数名与参数全部一样,否则就不是重写,而是重载。
联编也称绑定,是指源程序在编译后生成的可执行代码经过连接装配在一起的过程。联编分为两种:静态联编和动态联编。
① 静态联编
在运行前就完成的联编,又称前期联编。这种联编在编译时就决定如何实现某一动作,因此要求在程序编译时就知道调用函数的全部信息。这种联编类型的函数调用速度很快,效率也很高。
② 动态联编
在运行时动态地决定实现某一动作,又成后期联编。这种联编要到程序运行时才能确定调用哪个函数,提供了更好的灵活性和程序的易维护性。
大部分转的,作了少量编辑,补充点内容。
1、多态性的概念
在面向对象的概念中,多态性是指不同对象接收到相同消息时,根据对象类的不同产生不同的动作。多态性提供了同一个接口可以用多种方法进行调用的机制,从而可以通过相同的接口访问不同的函数。具体地说,就是同一个函数名称,作用在不同的对象上将产生不同的操作。多态性提供了把接口与实现分开的另一种方法,提高了代码的组织性和可读性,更重要的是提高了软件的可扩充性。
多态的三大特征: 要有重写,要有继承,父类指向子类。
重写与父类指向子类通过虚函数实现,是为了实现接口的重用。
继承是为了实现代码的重用。
首先,一般提到多态,我们说的是运行时多态,而不是指编译时多态。严格来说,只有运行时多态才叫多态,函数重载与运算符重载不是面向对象的,所以不能称为多态,模版属于范型,也不包含于面向对象。
由静态联编支持的多态性称为编译时的多态性或静态多态性,也就是说,确定同名操作的具体操作对象的过程是在编译过程中完成的。
▲C++用函数重载和运算符重载来实现编译时的多态性。模版也属于编译时多态。
由动态联编支持的多态性称为运行时的多态性或动态多态性,也就是说,确定同名操作的具体操作对象的过程是在运行过程中完成的。
▲C++用继承和虚函数来实现运行时的多态性。
3、重载(overload)与重写(override)
重载:同名函数不同参数。不属于面向对象,在编译期实现,通过编译器将同名函数名变换而实现出多个不同名的函数。重写:也称覆盖,子类中对于父类同名同参数函数的完全重新编写。属于面向对象,在运行期实现,通过虚函数实现,主要是为了实现接口的重用,将相同接口对应于不同的类型实现不同的方法。重写要求函数名与参数全部一样,否则就不是重写,而是重载。
4、联编
联编也称绑定,是指源程序在编译后生成的可执行代码经过连接装配在一起的过程。联编分为两种:静态联编和动态联编。① 静态联编
在运行前就完成的联编,又称前期联编。这种联编在编译时就决定如何实现某一动作,因此要求在程序编译时就知道调用函数的全部信息。这种联编类型的函数调用速度很快,效率也很高。
② 动态联编
在运行时动态地决定实现某一动作,又成后期联编。这种联编要到程序运行时才能确定调用哪个函数,提供了更好的灵活性和程序的易维护性。
相关文章推荐
- C++多态性:虚函数的调用原理
- 理解C++面向对象编程[多态性部分]
- c++ 虚函数和多态性
- C++的多态性实现机制剖析(即VC视频第3课this指针讲解)[程序员之家论坛]
- C++的多态性实现机制剖析
- 漫漫编程路——C++篇(八)——关于虚函数和多态性 (一)
- C++的多态性
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
- c++多态性
- C++ 多态性机制初探
- 细谈C++多态性的"动"与"静"
- C/C++学习----第三章 多态性和虚函数
- 转载--C++的多态性
- C++的多态性实现机制剖析(即VC视频第3课this指针讲解)
- C++ 多态性机制初探
- C++继承,多态性机制,自学随笔6月11日
- C++的虚基类与java的多态性
- 细谈C++多态性的“动”与“静”
- C++拾遗
- C++虚拟函数实现多态性分析