首页 > 知识点讲解
       多态
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C++程序设计基础 > 继承与多态 > 
相关知识点:2个      
        面向对象程序设计的核心是多态性(polymorphism),简单来说就是“一个接口,多种方法”,程序在运行时才决定所调用的函数。
        在派生类中可以定义一个与基类同名的函数,也就是说为基类的成员函数提供了一个新的定义,在派生类中的定义与在基类中的定义有完全相同的方法签名(即参数个数与类型均相同)和返回类型,对于普通成员函数,这称为重置(或覆盖);而对于虚成员函数,则称之为实现。
        多态也称为动态绑定或迟后绑定,因为到底调用哪一个函数,在编译时不能确定,而要推迟到运行时确定。也就是说,要等到程序运行时,确定了指针所指向的对象的类型时才能够确定。
        函数调用是通过相应的函数名来实现的。将源程序进行编译后并加载到内存执行时,函数实际上是一段机器代码,它是通过首地址进行标识和调用的。在C++中,函数调用在程序运行之前就已经和函数体(函数的首地址)联系起来。编译器把函数体翻译成机器代码,并记录了函数的首地址。在对函数调用的源程序段进行编译时,编译器知道这个函数名的首地址在哪里(它可以从生成的标识符表中查到这个函数名对应的首地址),然后将这个首地址替换为函数名,一并翻译成机器码。这种编译方法称为早期绑定或静态绑定。
        当用基类指针调用成员函数时,是调用基类的成员函数还是调用派生类的成员函数,这由指针指向的对象的类型决定。也就是说,如果基类指针指向基类对象,就调用基类的成员函数;如果基类指针指向派生类对象,就调用派生类的成员函数。这就要用到另外一种方法,称为动态绑定或迟后绑定。
        在C++中,动态绑定是通过虚函数来实现的。虚函数的定义很简单,只要在成员函数原型前加一个关键字virtual即可。如果一个基类的成员函数定义为虚函数,那么它在所有派生类中也保持为虚函数,即使在派生类中省略了virtual关键字。要达到动态绑定的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数个数和类型也必须相同。
        仅定义了函数而没有函数实现的虚函数称之为纯虚函数。定义纯虚函数的方法是在虚函数参数表右边的括号后加一个“=0”的后缀,例如:
        
        含有纯虚函数的类,称之为抽象类。C++不允许用抽象类创造对象,它只能被其他类继承。要定义抽象类,就必须定义纯虚函数,它实际上起到一个接口的作用。
        对虚函数的限制是:只有类的成员函数才可以是虚函数;静态成员函数不能是虚函数;构造函数不能是虚函数,析构函数可以是虚函数,而且常常将析构函数定义为虚函数。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有