当前位置:首页 » 编程软件 » 编译时多态是通过什么实现的

编译时多态是通过什么实现的

发布时间: 2022-08-27 16:43:16

⑴ C++编程中多态性的实现机制到底是什么呀

楼上的说不对
在C++中,多态性分为两种,一种称为编译时多态,另一种为运行时多态
分别解释下:
1.编译时多态,也就是函数重载,所谓函数重载是指同一个函数名可以对应着多个函数的实现,具体调用哪个按照由参数个数,参数类型等来决定,这个简单,就不说了
2.运行时多态,就是虚函数。
在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,以实现你所想要的功能。

⑵ 多态的原理是什么

在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。

计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。

多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。

(2)编译时多态是通过什么实现的扩展阅读:

多态可分为变量多态与函数多态。变量多态是指:基类型的变量(对于C++是引用或指针)可以被赋值基类型对象,也可以被赋值派生类型的对象。函数多态是指,相同的函数调用界面(函数名与实参表),传送给一个对象变量,可以有不同的行为,这视该对象变量所指向的对象类型而定。因此,变量多态是函数多态的基础。

多态还可分为:动态多态(dynamic polymorphism)和静态多态(static polymorphism)。

对于C++语言,带变量的宏和函数重载(function overload)机制也允许将不同的特殊行为和单个泛化记号相关联。然而,习惯上并不将这种函数多态(function polymorphism)、宏多态(macro polymorphism)展现出来的行为称为多态(或静态多态),否则就连C语言也具有宏多态了。谈及多态时,默认就是指动态多态,而静态多态则是指基于模板的多态。

⑶ c++多态实现原理

1.在编译期间实现多态多态是指在不同的条件下表现出不同的状态,C++中通过重载函数的方法可以在编译期间实现多态。在编译时编译器会根据参数列表的不同寻找合适的函数。
2.使用虚函数实现多态C++中运行时多态可以通过声明一个虚函数来实现。虚函数分为纯虚方法和半虚方法,纯函数父类没有实现版本,完全交给子类,且必须实现。半虚函数父类可以实现...
3.虚函数的实现原理一个类中如果有虚函数声明,那么这些函数会由一个虚函数表来维护 1)...

java语言是如何实现多态的

你好,很高兴回答你的问题。
java的多态是通过继承、重写、重载来实现的。

同一个父类的多个子类,通过各自重写继承自父类的方法,实现子类实现父类方法的多态。

而一个类中,相同的方法名可以通过不同的参数列表重载来显示一个类中相同方法名的多态。

如果有帮助到你,请点击采纳。

我解答的大部分是软件开发新人遇到的问题,如果有兴趣可以关注我。

⑸ 面向对象的多态详解 !!

面向对象的软件开发语言具有三个重要的特点分别为封装性、继承性、多态性。封装性即意味着对象封装其内部的数据,使其对外不可见,以保证数据的安全性。继承性是代码复用的一个很好的解决方案,但是继承关系是编译器在编译阶段就为所有的对象决定的,因而在软件工程过程中,继承性太过死板,存在很大的局限性。而多态性,它是将多种不同的特殊行为进行抽象的一种能力,通过结合继承性,多态性很好地解决了OO遇到的很多麻烦,使得面向对象的编程方式最终得到淋漓尽致的推广。

多态性和泛型编程

各种编程语言都内置了多种基本数据结构并且支持自定义数据类型,因而程序员在程序设计过程中可能会遇到多种数据类型,而针对这些数据类型的逻辑操作很有可能是雷同的。此时为每一种数据类型都设计出相应的逻辑函数似乎已经变得很不现实,因而泛型编程孕育而生了。泛型编程的出现,可以说在软件工程领域里是一个极大的进步。利用泛型编程,我们可以不为特定的类型进行专门编码,而采用对不同类型进行通用编码的方式来解决应对大量数据类型的问题。C++
STL是泛型编程的成功案例。利用Template函数,STL成功实现了对多种数据类型进行泛化的效果。而OO通过接口或者抽象类进一步实现了对类的泛化,也就是在面向对象过程中出现的新名词—多态!

多态性特点

简单来说,多态是具有表现多种形态的能力的特征,在OO中是指,语言具有根据对象的类型以不同方式处理,即指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。多态性在不同的编程语言中拥有不同的解决方案,但多态性的最终目标却始终不变,都是“以不变应万变”。

两种多态方式

一般来说,多态主要是存在两种类型:编译时的多态和运行时的多态。

1
编译时的多态主要是通过函数重载来实现的。所谓函数重载是指保持函数名不变,主要通过更改函数形参的个数以及形参的类型来定义出多个同名函数来实现对多种类型数据的逻辑处理。这种类型的多态关系是编译器在编译阶段就已经在函数调用的地方确定的,因而运行过程中速度较快,但功能比较局限。

2
运行时的多态在不同的语言中拥有不同的实现方案。C++通过虚函数的晚捆绑来实现,而Java通过面向接口编程和面向抽象编程来实现动态调用相应的函数实现。但归根结点,这些语言都是通过将多种特殊实现的类抽象为一个泛化类来实现运行多态。

面向接口编程

软件工程中程序涉及到的对象越多,对象之间相似的概率越大,因而这时候抽象变成了可能。通过定义接口,程序设计者可以成功实现对方法的定义和实现的分离,因而应用程序不必考虑子类成员函数中是如何实现内部逻辑细节,只需知道该类对象向外公开的接口便可成功操纵这类对象。而这种编程方式,为以后程序的改动以及程序的健壮性和扩展性都提供了一个比较理想的解决方案。因此面向抽象编程已经成为OO界强烈推崇的编程方式。

OO思想已经深入广大编程人员的工作中,如何能够充分合理利用OO的特点达到最优化软件体系结构将会成为每一个OO程序员应该思考的问题,相信OO思想能够为大家的软件设计带来前所未有的效果。

⑹ 什么是多态

多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4编程技术内幕”)。

简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

拓展资料:

多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。

OC中的多态:不同对象对同一消息的不同响应.子类可以重写父类的方法。

多态就是允许方法重名 参数或返回值可以是父类型传入或返回。

多态也指生物学中腔肠动物的特殊的生活方式。水螅态与水母态的世代交替现象。

把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

使用继承性的结果就是当创建了一个类的家族,在认识这个类的家族时,就是把子类的对象当作基类的对象,这种认识又叫作upcasting(向上转型)。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。

简单的说,建立一个父类对象的引用,它所指对象可以是这个父类的对象,也可以是它的子类的对象。java中当子类拥有和父类同样的函数,当通过这个父类对象的引用调用这个函数的时候,调用到的是子类中的函数。

⑺ 编译时多态性使用什么获得!A重载函数B继承C虚函数D.B和C

函数重载和模板。就这题来说选A。
继承和虚函数对应的多态需要在运行的时候才能确定具体对象,所以不属于编译时多态。

函数重载是让一个函数名对应多个函数,编译器会根据调用时候的特征确定要调用的函数,不需要再运行时处理。
而模板是让一个一个类型模板或者函数模板对应多个类型或者函数,编译器根据对模板实例化是使用的参数生成具体的类和函数,也不是在运行时进行的。
另外注意模板变量不属于多态范畴。

热点内容
超级脚本制作 发布:2025-02-07 19:31:30 浏览:486
怎么查看支付宝的账号密码 发布:2025-02-07 19:26:48 浏览:16
惠普服务器查看ip指令 发布:2025-02-07 19:26:47 浏览:434
算法设计模式 发布:2025-02-07 19:15:52 浏览:745
服务器1u能连接几台电脑 发布:2025-02-07 18:50:02 浏览:153
立人编译 发布:2025-02-07 18:48:32 浏览:765
日产途达四驱的有哪些配置 发布:2025-02-07 18:42:02 浏览:832
服务器搭建镜像站 发布:2025-02-07 18:41:55 浏览:377
游戏上云成标配云服务器该怎么选 发布:2025-02-07 18:26:13 浏览:141
哪个安卓手机自带系统没有广告 发布:2025-02-07 18:22:36 浏览:724