函数重载(函数多态)

函数重载多态 概念 函数重载,术语为“多态”,指的是同名函数有多种形式,他们完成相同的工作,但使用不同的参数列表。 函数重载的关键是函数的参数列表——也称为函数的特征标(function signature)。 C++允许定义名称相同的函数,条件是他们的特征标即函数的参数列表不同。如 void print(const char * str,int width); void print(double d,int width); void print(long l,int width); 注意 在编译器编译时, 阅读详情

函数的默认参数可以令我们使用具有不同参数数目的同一个函数,而函数多态可以令我们使用多个相同名称的函数。多态指的是多种形式,函数多态允许函数具有多种形式。c++使用上下文来确定使用的重载函数版本。

函数重载

1. c++允许定义名称相同的函数,前提是他们的特征标不同,即参数数目或参数类型不同。 例如,定义一组原型如下的函数:

void print(const char * str , int width);
void print(double d , int width);
void print(long l , int width);
void print(int i , int width);
void print(const char * str);

2. 使用被重载的函数时,需要在函数调用中使用正确的参数类型。例如,下面的语句:

unsigned int year=3210;
print(year,6);

调用时,没有与print函数匹配的函数原型,但是c++将会尝试使用强制类型转换强制进行匹配。但是上述print函数有三个可以强制转换的目标函数,所以c++将拒绝这种函数调用,视为错误。

3. 一些看起来形式不同,但是实质相同的特征标也是不能共存的。 例如,下面的代码:

double cube(doube x);
double cube(double & y);

编译器在检查函数特征标时,将类型引用和类型本身视为同一个特征标。

4. 是特征标,而不是函数返回值类型使得可以对函数进行重载。
比如,下面的语句:

long cube(doube x);
double cube(double x);   //invalid

c++不允许此种情况出现,函数返回类型可以不同,但是特征标必须不同。

C++ 多态的表现形式:重载与虚函数 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说:允许将子类类型的指针赋值给父类类型的指针(一个接口,多种方法)。 C++ 支持两种多态性:编译时多态性,运行时多态性。 a、编译时多态性(静态多态):通过重载函数实现 b、运行时多态性(动态多态):通过虚函数实现。 多态的作用 那么多态的作用是... 阅读详情

相关推荐

Matlab编程技巧:继承与多态

Circle 类新增了半径属性,并覆盖了基类的绘图函数。可以看到,Shape、Circle 和 Rectangle 之间成功地建立了继承关系,且每个子类都实现了自己特定的绘图函数,同时也可以使用父类的绘图函数。上述代码定义了一个名为Shape的类,其中包括名称和颜色这两个属性,以及绘图函数plot。Rectangle 类新增了宽度和高度两个属性,并同样覆盖了基类的绘图函数。综上所述,Matlab 的子类语法提供了一种实现继承和多态的方式,可以帮助我们更方便地进行面向对象编程。

DevWizard的博客 482

多态的实现及虚函数

多态的实现及虚函数

多态函数

C/C++的基础类函数,面向对象的基础类函数

isscalar matlab,MATLAB学习笔记—多态函数

多态函数(Polymorphic functions)什么是多态?是指函数可以根据输入输出的表达式个数和类型作出不同的反应。举个栗子:zeros(5,6)生成5×6矩阵,zeros(4)生成4×4的矩阵。MATLAB中许多内置的函数多态(sqrt, max, size, plot, etc.)如何使自己的函数具有多态性?nargin: 返回实际的输入参数的个数nargout: 返回实际要求的输...

weixin_39843431的博客 405

matlab arr3(5:end),Matlab多态

不幸的是,MATLAB中数组的所有元素必须属于同一类型。当您连接不同的类时,MATLAB将尝试将它们全部转换为同一个类。如果您已将某个类定义为低于或高于另一个类(使用InferiorClasses属性或INFERIORTO / SUPERIORTO函数),那么调用更优越的类。如果尚未指定类之间的关系,则两个对象具有相同的优先级,MATLAB调用最左侧的对象方法。这可能是arr = [b c];创建...

weixin_33120053的博客 423

C++中多态性和重载

面向对象的三大特征: 1.封装:保证对象自身数据的完整性、安全性 2.继承:建立类之间的关系,实现代码复用、方便系统的扩展 3.多态:相同的方法调用可实现不同的实现方式。多态是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式。 、、、、、、、、、 实现多态的方式: 函数重载;运算符重载;虚函数 、、、、、、、、、 C++有两

一步一步往上爬~~~ 2420

函数重载多态场景

摘要: 文章探讨了C++中父类指针与子类指针作为函数参数时的重载问题。

CSDN_RTKLIB的博客 561

函数重载多态一文带你攻关【C++每日一学】

本文深入解析C++中的函数重载和运行时多态机制。函数重载是编译时多态,允许同名函数根据参数列表不同而区分;而运行时多态通过虚函数表实现动态绑定,使基类指针/引用能调用派生类函数。文章详细介绍了两种多态的实现原理、使用场景和最佳实践,包括名字修饰、虚函数表机制等底层实现,并通过代码示例展示如何利用多态特性编写更灵活、可扩展的面向对象程序。 关键词:函数重载多态、虚函数、虚函数表、动态绑定

不会C++、害怕嵌入式且不爱看动漫的小趴菜 2万+

C++静态多态性之函数重载

C++静态多态性 C++静态多态性包括函数重载与缺省参数,运算符重载,宏多态,类的早起绑定。注意C语言没有重载机制。 函数重载要深入理解函数重载需要了解下列几个问题: - 什么是函数重载 - 为什么需要函数重载 - 编译器如何解决命名冲突,为什么不考虑返回值的类型 - 重载函数的调用匹配 - 编译器如何解析重载函数的调用的 1.1什么是函数重载 函数重载是指在同一作用域内

langzi989的专栏 3611

坚持学习100天:多态(函数重载,虚函数以及多态)

前言 Hello,我是修齊。 学习C++的第一百零九天,用心学习。 在这里记录一些学习的东西和学习的心情,内容主要是一些自己学习整理的小笔记。 一、多重继承 1.声明的一般形式: class<派生类名>:<派生方式1><基类名1>...<派生方式n><基类名n> { 派生类成员声明 } 二、代码 1.定义两个基类,并定义的派生类继承于两个基类 class base 1//定义基类base public://定义基类成员 i

m0_55732114的博客 1156

C++中函数重载、虚函数多态的总结

本文总结了C++中实现多态的两种机制:函数重载(静态多态)和虚函数(动态多态)。函数重载允许同一作用域内定义同名但参数不同的函数,编译时根据参数选择版本;虚函数通过继承和虚函数表实现,运行时根据对象实际类型调用函数。文章通过示例代码展示了二者的使用场景和特性,并分析了虚函数表的实现原理。最后指出二者都体现了"同一接口,多种实现"的多态思想,但重载基于参数(编译时解析),虚函数基于继承(运行时绑定)。

qq_45052554的博客 766

重载覆盖多态和虚函数

现在整理出来,希望可以记住这个。 重载 函数的名称一样,但是参数不同,就是重载函数的名称知道了,但是编译的时候不知道调用哪个函数重载决议;根据参数决定到底应该调用哪个函数; 区别就是:调用的参数不一样; 覆盖 对于非虚函数,子类和基类同名(不管参数),那么就是导致覆盖; 如果参数完全一样,那么会完全覆盖,只会留下子类的函数;如果参数不一样,那么父类的会保留到子类中; // ======...

qq_32570261的博客 276

Python函数重载多态和继承

Python函数重载多态和继承

清風明月_xf 的博客 1万+

坚持学习100天:多态函数重载、虚函数多态

前言 Hello,我是修齊。 学习C++的第一百零一十天,将近五一假期了,不浪漫亦是罪名,男生今年不能再挨批斗了,放假就得好好陪陪身边的人浪漫浪漫,生活,加油,学习加油。 在这里记录一些学习的东西和学习的心情,内容主要是一些自己学习整理的小笔记。 一、多态 1.一个接口,多种实现:同一种事务表现出来的多种形态 2.面向对象的多态性可分为四类:重载多态、强制多态、包含多态、参数多态 3.专用多态重载多态和强制多态;通用多态:包含多态和参数多态 4.包含多态:定义于不同类中的同名成员函数多态行为,主要通过虚

m0_55732114的博客 380

【C++指南】函数重载多态性的基石

在C++编程中,函数重载是一项基础而强大的特性,它允许我们在同一作用域内定义多个具有相同名称但参数列表不同的函数。这一特性不仅极大地丰富了C++语言的表现力,还为我们编写更加灵活和可读的代码提供了可能。特别是在处理大型项目或设计复杂的类结构时,函数重载的重要性更是凸显无疑。它能够帮助我们更好地组织代码,实现多态性,以及提供清晰、直观的接口。本文将深入探讨C++函数重载的基本概念、实现方式、规则与限制,以及它在实际应用中的优势和最佳实践。我们希望通过这篇文章,能够帮助读者更加深入地理解函数重载,并在自己的编程

倔强的石头的博客 1776

[C++] 多态函数重载的关系

多态是面向对象编程的概念,比如有一个变量 animal引用一个 Animal类型的对象,Animal类上有一个方法叫shout,那么调用animal的shout方法会执行什么函数呢?要看运行时animala引用了什么类的对象,因为不光 Animial类的对象可以被 animala引用, Animial所有的子类(比如dog、Cat、Tiger)都可以被 animal引用,对应的,如果animal实际上引用的是Dog类对象,调用的就是Dog类的shout。这种对一个类对象函数调用只有在运行时才确定调用什么类函

Loewen丶的小窝 2243

c++——函数重载多态

一、什么是函数重载 函数重载是c++在C语言基础上新增的功能。函数重载又称函数多态,就是能够使用多个同名的函数,同时可以实现函数的多种形式。函数重载的关键是函数的参数列表(函数特征标),如果俩个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同。c++允许定义相同名称的函数,前提条件是它们的特征标不同。 //函数重载例子,下面三个函数的特征标不同 void printf(int a,char b);//1 void printf(int a,float b);//2 void print

afootball的博客 1374
上一篇: 函数的默认参数
下一篇: 函数模板一
fh2627
博客等级 码龄10年 4粉丝 24原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值