C/C++函数重载与缺省参数

C语言是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。下面是小编分享的C/C++函数重载与缺省参数,一起来看一下吧。

函数重载

函数多态是C++在C语言的基础上新增的功能,默认参数让你能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让你能够使用多个同名的函数。“多态”指的是有多种形式因此函数多态允许函数可以有多种形式,类似的术语“函数重载”指的是可以有多个同名的函数,因此对名称进行了重载,它们两个看起来是同一回事,但我们会通常使用函数重载,可以通过函数重载来设计一系列的函数,它们完成相同的工作,但使用不同的参数列表。

重载函数就像是有多钟含义的动词。函数重载的关键是函数的参数列表(也称为函数特征标【function 、signature】)。如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是无关紧要的。C++允许定义名称相同的函数,条件是它们的特征标不同,如果参数数目和/或参数类型不同,则特征标也不同。

我们从代码里面看下:

C C++

c语言:面向过程的语言,严格的先后顺序,便于理解

c++语言:面向对象的语言,先后顺序没有那么严格

//

C++是C的升级

C++比C语言多了两个关键的'知识,1、类和对象;2、模板

//

函数重载

对于相同(相似)的函数行为,用一个函数名进行管理

一个函数名管理多个函数体

构成函数重载的条件:函数名必须一致,参数列表不一致

参数列表不一致:1、参数列表的个数不一致;2、参数对应位置的类型不一致

//

//struct MyPoint

//{

// int row, col;

//};

//

int MyDev(int a, int b)

{

return a / b;

}

char MyDev(int c, int d)

{

return c / d;

}

//

//int MyMul(int a, char c)

//{

// return a * c;

//}

//

//int MyMul(char c, int a)

//{

// return a * c;

//}

//

//int myAdd(int a, int b, int c)

//{

// return a + b + c;

//}

//

//int myAdd(int a, int b)

//{

// return a + b;

//}

//

//double myAdd(double a, double b)

//{

// return a + b;

//}

//

//MyPoint myAdd(MyPoint a, MyPoint b)

//{

// MyPoint tempPos;

// tempPos.row = a.row + b.row;

// tempPos.col = a.col + b.col;

// return tempPos;

//}

//

//void main()

//{

// printf("%f

",myAdd(1.3,2.89));

// printf("%d

", myAdd(1, 2));

//

//}

//函数的缺省参数

//在函数定义的时候,给形参给出初始值。

//当函数调用时,就可以不用再给实参,默认使用初始值

//函数调用给出实参,会用实参去替换掉默认的初始值

//缺省参数只能由后往前缺省

//缺省参数和函数重载组合会产生二义性

//缺省参数声明和定义分开

int myMul(int a = 1, int b = 4);

//int MyAdd(int a, int b)

//{

// return a + b;

//}

//

//int MyAdd(int a, int b, int c = 1)

//{

// return a + b + c;

//}

void mySwap(int a, int b)

{

int c = a;

a = b;

b = c;

}

void main()

{

int num1 = 10;

int num2 = 20;//两个变量是通过一段流程语句来的

//printf("%d

", MyAdd(num1, num2));

//printf("%d

", MyAdd());

mySwap(num1, num2);

printf("num1 = %d num2 = %d

", num1, num2);

}

int myMul(int a, int b)

{

return a * b;

}

【C/C++函数重载与缺省参数】相关文章:

c 语言重载参数类型不同重载和,C/C++函数重载与缺省参数相关推荐

  1. java反射 获取参数类型_Java反射带参构造创建对象时如何自动转换参数类型

    需求是这样的:有一个类,类的路径知道,例如是com.xx.xx.xx其中有不同类型的成员变量(个数未知),有对应的setter和getter方法,有一个无参构造和一个全参构造.现在需要用反射机制... ...

  2. oracle 函数参数类型,ORACLE 11g中的表值函数? (参数化视图)

    搜索热词 过去我已经看过关于这个问题的讨论,比如 here.但是我想知道如果某个地方沿线,或许10g或11g(我们正在使用11g),ORACLE已经对"参数化视图"提供了更好的支持 ...

  3. c 语言重载参数类型不同重载和,C++基础学习之函数重载的简单介绍

    前言 我们在平时写代码中会用到几个函数但是他们的实现功能相同,但是有些细节却不同.例如:交换两个数的值其中包括(int, float,char,double)这些个类型.在C语言中我们是利用不同的函数 ...

  4. C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))

    1. C++关键字(C++98) 2. 命名空间 在C/C++中,变量.函数和后面要学到的类都是大量存在的,这些变量.函数和类的名称将都存在于全局作用 域中,可能会导致很多冲突.使用命名空间的目的是对 ...

  5. C++语言函数重载详解和示例

    C++ 函数重载的概念 在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同.例如把变量的值写入文件,变量的类型int.long.double.char,需要通过参数把变量传入函数.在 ...

  6. C语言学习篇(32)——为什么C语言不能函数重载

    前言 在日常的开发中,我们有时会遇到根据不同情景,想通过传入不同类型的参数,而调用统一的函数接口,即函数重载. 在C++中原生支持了函数重载, 而在C语言中并不支持,只能通过一些技巧来变相解决, 如定 ...

  7. ActionScript语言函数重载

    更新:你见过JavaScript支持重载吗,规范就是这么定义的.如果不是研究Java和Flex对象的Serialization,我也不会注意它. 距离写这篇文章已有8年了,时光匆匆啊,今天整理资料时看 ...

  8. 超详细的C++入门学习(命名空间,缺省参数,内联函数,函数重载等)

    目录 前言 1. C++关键字 2. 命名空间 2.1定义命名空间 2.2使用using将命名空间中某个成员引入 2.3使用using namespace 命名空间名称 引入 3. C++输入& ...

  9. C++默认参数与函数重载

    C++默认参数与函数重载 一.默认参数 在C++中,可以为参数指定默认值.在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数. 默认参数的语法与使用: (1)在函数声明或定义时,直接对参数 ...

  10. 【TS】函数重载--可选参数--默认参数

    可选参数–默认参数 在ts中定义的数据类型,某些情况下只需要传入定义数据类型的一部分参数,比如:id .name.age.address,此时需要修改用户的名称,那么只需要传入id.name就够了:某 ...

最新文章

  1. canvas烟花锦集
  2. 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)
  3. Python自动化开发 - 字符编码、文件和集合
  4. 2015-04-22记录--一些JS疑惑
  5. group by 将null放到其他_为什么我不建议你用去 “ ! = null quot; 做判空?
  6. 笔记:less的三种使用方法
  7. python组件介绍_python 中的爬虫· scrapy框架 重要的组件的介绍
  8. 用Python告诉你,为什么宇宙的尽头是公务员!
  9. ~~字符串哈希(数据结构)(附模板题AcWing 841 字符串哈希)
  10. java类对象的内部结构图解(java对象模型精讲)
  11. rp软件app流程图_AxureRP介绍
  12. 锐文网络安全网闸卡各种应用场景
  13. 这些藏在成都的 NB 互联网公司
  14. 自学型程序员的崛起:如何顺利找到工作?
  15. 疏忽导致易接SDK OpenGL error
  16. 编写MTK6737平台的GPIO驱动例程(一)
  17. MEMS传感器领域关于薄膜性能的中国国家标准,“带状薄膜抗拉性能的试验方法”由北京智芯传感等单位发布并实施
  18. General Trainning Strategy in Caffe
  19. Tracup体验报告
  20. Ubuntu+Tesla M40上OpenCL问题解决过程

热门文章

  1. 从Word Embedding到Bert模型——自然语言处理预训练技术发展史
  2. 20191127_朴素贝叶斯多分类
  3. 深度学习10-tf.data-数据输入管道简介
  4. 数据科学包5- pandas基础之基础运算
  5. Pandas文件读取详解
  6. Python字符串中常用的方法
  7. 疫情下的创业品牌如何逆风翻盘?
  8. 写需求分析必须牢记的5大要点
  9. 3D Segmentation with Exponential LogarithmicLoss for Highly Unbalanced Object Sizes-MICCAI2018【论文理解】
  10. 自动拷贝远程服务器文件夹,怎么从远程服务器上拷贝文件夹