C++拾遗:多态性
来源:互联网 发布:wireshark ubuntu 编辑:程序博客网 时间:2024/06/05 16:25
参考资料:http://hi.baidu.com/smurfyan/item/2c723e89c61d7ece99255fc3
大部分转的,作了少量编辑,补充点内容。
1、多态性的概念
在面向对象的概念中,多态性是指不同对象接收到相同消息时,根据对象类的不同产生不同的动作。多态性提供了同一个接口可以用多种方法进行调用的机制,从而可以通过相同的接口访问不同的函数。具体地说,就是同一个函数名称,作用在不同的对象上将产生不同的操作。
多态性提供了把接口与实现分开的另一种方法,提高了代码的组织性和可读性,更重要的是提高了软件的可扩充性。
多态的三大特征: 要有重写,要有继承,父类指向子类。
重写与父类指向子类通过虚函数实现,是为了实现接口的重用。
继承是为了实现代码的重用。
首先,一般提到多态,我们说的是运行时多态,而不是指编译时多态。严格来说,只有运行时多态才叫多态,函数重载与运算符重载不是面向对象的,所以不能称为多态,模版属于范型,也不包含于面向对象。
由静态联编支持的多态性称为编译时的多态性或静态多态性,也就是说,确定同名操作的具体操作对象的过程是在编译过程中完成的。
▲C++用函数重载和运算符重载来实现编译时的多态性。模版也属于编译时多态。
由动态联编支持的多态性称为运行时的多态性或动态多态性,也就是说,确定同名操作的具体操作对象的过程是在运行过程中完成的。
▲C++用继承和虚函数来实现运行时的多态性。
3、重载(overload)与重写(override)
重载:同名函数不同参数。不属于面向对象,在编译期实现,通过编译器将同名函数名变换而实现出多个不同名的函数。
重写:也称覆盖,子类中对于父类同名同参数函数的完全重新编写。属于面向对象,在运行期实现,通过虚函数实现,主要是为了实现接口的重用,将相同接口对应于不同的类型实现不同的方法。重写要求函数名与参数全部一样,否则就不是重写,而是重载。
4、联编
联编也称绑定,是指源程序在编译后生成的可执行代码经过连接装配在一起的过程。联编分为两种:静态联编和动态联编。
① 静态联编
在运行前就完成的联编,又称前期联编。这种联编在编译时就决定如何实现某一动作,因此要求在程序编译时就知道调用函数的全部信息。这种联编类型的函数调用速度很快,效率也很高。
② 动态联编
在运行时动态地决定实现某一动作,又成后期联编。这种联编要到程序运行时才能确定调用哪个函数,提供了更好的灵活性和程序的易维护性。
- C++拾遗:多态性
- C 拾遗
- c拾遗
- C++:多态性
- C++-多态性
- C++---多态性
- C+++多态性
- 【C#】多态性
- C++---------【多态性】之【静态多态性】
- C/C++拾遗
- C语言拾遗
- c语言拾遗3
- c语言拾遗4
- C语言拾遗
- C/C++ 拾遗(1)
- C语言拾遗
- C语言拾遗
- C语言数据类型拾遗
- Memory Leak和Valgrind
- 关于GDI导致的崩溃有感~
- git 冲突解决办法
- leetcode: Count and Say
- 我是程序猿
- C++拾遗:多态性
- vb重装问题
- 原创文章5个-111111111111111
- android:targetSdkVersion 属性导致地图无法拖动问题
- IDl save the command line to file
- FrameLayout
- 输出音频和捕获音频
- ios 无限后台任务
- Maven普通java项目以及web项目快速创建及导入汇总