【C++】多态性(函数重载与虚函数)
2015-07-22 16:05
375 查看
多态性就是同一符号或名字在不同情况下具有不同解释的现象。多态性有两种表现形式:
编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定。
运行时多态性:不同对象在收到相同消息时产生不同的动作,一般通过虚函数来实现,只有在运行时才能实现绑定,属于动态绑定。
一旦基类的成员函数被定义成了虚函数,则该基类的派生类的同名成员函数(名字、返回值类型、参数个数及类型均相同)不管前面是否加关键字virtual ,同样也具有虚特性,同样是虚函数。定义虚函数语法格式如下:
虚函数机制:如果通过引用或指针访问虚函数,编译时就不会确定具体的调用函数,只有在运行时才根据具体的对象类型,调用其相应的函数实现。注意:虚函数的“动态绑定虚特性”必须通过基类的指针挥着基类的引用才能够表现出来,通过对象调用虚函数不能进行动态绑定。
编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定。
运行时多态性:不同对象在收到相同消息时产生不同的动作,一般通过虚函数来实现,只有在运行时才能实现绑定,属于动态绑定。
虚函数
虚函数是在基类中用关键字virtual 标识的成员函数,可以在一个或多个派生类中被重新定义。如果一个函数被定义为虚函数,那么,即使是使用指向基类对象的指针来调用该成员函数,也能保证所调用的是正确的特定于实际对象的成员函数。这正是虚函数的优点所在。一旦基类的成员函数被定义成了虚函数,则该基类的派生类的同名成员函数(名字、返回值类型、参数个数及类型均相同)不管前面是否加关键字virtual ,同样也具有虚特性,同样是虚函数。定义虚函数语法格式如下:
class <类名> { virtual <返回值类型><函数名>(<形参表>); };
虚函数机制:如果通过引用或指针访问虚函数,编译时就不会确定具体的调用函数,只有在运行时才根据具体的对象类型,调用其相应的函数实现。注意:虚函数的“动态绑定虚特性”必须通过基类的指针挥着基类的引用才能够表现出来,通过对象调用虚函数不能进行动态绑定。
相关文章推荐
- c语言,数组和字符串
- 使用make是深入进行c++开发的必然选择
- 设定C和C++ CodeBlocks编译器的初学者教学指南
- C++类型转换运算符 static_cast,dynamic_cast,reinterpret_cast,const_cast
- C语言inline函数
- C语言的inline
- [C++设计模式] composite 组合模式
- C语言的inline(转载)
- c语言,enum
- c++11标准范围for语句的尝试
- 指针参数传递
- POJ 3268
- C++学习之旅——结构体和联合体的区别,以及数据对齐方式影响内存大小
- C语言指针总结
- C语言中 float double在内存中的存储
- C宏定义#和##的用法
- PAT (Basic Level) Practise (中文)1026. 程序运行时间(15) C语言
- C语言获取系统时间的方式
- 重新认识C语言
- LeetCode 204. Count Primes