c++的静态多态和动态多态(笔记)

c++的静态多态和动态多态(笔记)

ID:15411574

大小:52.00 KB

页数:11页

时间:2018-08-03

c++的静态多态和动态多态(笔记)_第1页
c++的静态多态和动态多态(笔记)_第2页
c++的静态多态和动态多态(笔记)_第3页
c++的静态多态和动态多态(笔记)_第4页
c++的静态多态和动态多态(笔记)_第5页
资源描述:

《c++的静态多态和动态多态(笔记)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、查看文章 c++的静态多态和动态多态(笔记)2010-01-0321:16多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继承和虚函数机制生效于运行期的动态多态(dynamicpolymorphism)外,模板也允许将不同的特殊行为和单个泛化记号相关联,由于这种关联处理

2、于编译期而非运行期,因此被称为静态多态(staticpolymorphism)。事实上,带变量的宏和函数重载机制也允许将不同的特殊行为和单个泛化记号相关联。然而,习惯上我们并不将它们展现出来的行为称为多态(或静态多态)。今天,当我们谈及多态时,如果没有明确所指,默认就是动态多态,而静态多态则是指基于模板的多态。不过,在这篇以C++各种多态技术为主题的文章中,我们首先还是回顾一下C++社群争论已久的另一种“多态”:函数多态(functionpolymorphism),以及更不常提的“宏多态(mac

3、ropolymorphism)”。C++支持多种风格的编程模式称之为编程范型C++支持的编程范型包括面向过程的基于对象的面向对象的和泛型编程通过指针和引用来支持多态是面向对象的编程范型区别于基于对象的编程范型的本质所在所谓多态是指通过单一的标识支持不同的特定行为的能力C++支持多种形式的多态从绑定时间来看可以分成静态多态和动态多态也称为编译期多态和运行期多态从表现的形式来看有虚函数模板重载和转换[1]由于静态多态在时间和空间上都比动态多态表现得好因此在其他的条件相同的情况下应该更多地使用静态多态

4、函数多态也就是我们常说的函数重载(functionoverloading)。基于不同的参数列表,同一个函数名字可以指向不同的函数定义://overload_poly.cpp#include#include//定义两个重载函数intmy_add(inta,intb){   returna+b;}intmy_add(inta,std::stringb){   returna+atoi(b.c_str());}intmain(){   inti=my_add(1,2

5、);               //两个整数相加   ints=my_add(1,"2");             //一个整数和一个字符串相加   std::cout<<"i="<

6、数进行名字重整,而后这些同名函数就变成了彼此不同的函数。比方说,也许某个编译器会将my_add()函数名字分别重整为my_add_int_int()和my_add_int_str()。宏多态带变量的宏可以实现一种初级形式的静态多态://macro_poly.cpp#include#include//定义泛化记号:宏ADD#defineADD(A,B)(A)+(B);intmain(){   inti1(1),i2(2);   std::strings1("He

7、llo,"),s2("world!");   inti=ADD(i1,i2);                       //两个整数相加   std::strings=ADD(s1,s2);               //两个字符串“相加”   std::cout<<"i="<

8、字符串相加则体现为连接(注:string.h库已经重载了“+”)。程序的输出结果符合直觉:1+2=3Hello,+world!=Hello,world!动态多态这就是众所周知的的多态。现代面向对象语言对这个概念的定义是一致的。其技术基础在于继承机制和虚函数。例如,我们可以定义一个抽象基类Vehicle和两个派生于Vehicle的具体类Car和Airplane://dynamic_poly.h#include//公共抽象基类VehicleclassVehicle{public:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。