函数重载

函数重载是在C语言的学习中未涉及的新概念。我们在编程时经常会遇到这样一个问题:我们编写完一个函数准备准备调用时,一旦需要传入不同的数据类型的参数时,一个函数无法实现,我们又必须重写另一个或者多个命名不用的功能近似的函数才能实现其操作,但是显然,对于实现相同功能传入不同的数据类型参数却需要调用不同名的函数,这增加了无谓的难度。这时,函数重载提供给了我们一个解决方法.

(1)定义:两个或者以上的具有相同函数名,但是形参类型或者个数不同,编译器会根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

有了函数重载之后,我们在函数功能近似但函数参数不同的情况下,无须对函数命名不同的名字,编译器会自动匹配。

例如对x+y函数功能的实现:

#include<iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
double add(double a, double b)
{
return a + b;
}
int main()
{
int a, b;
double c, d;
cout << "输入两个int值" << endl;
cin >> a >> b;
cout << "输入两个double值" << endl;
cin >> c >> d; cout << "int值的和为" << add(a, b)<<endl;
cout << "double值的和为" << add(c, d) << endl; return ;
}

输出结果为:

代码编译可以表明:对于调用相同函数名函数,编译器会自动匹配。

注意:重载函数的参数必须在参数个数或者类型方面有所不同,如果函数名相同,形参类型也相同,在编译时会被认为是语法错误。

重载函数的正确表现形式:

int  add(int x,int y);
double add(double x,double y);

或者:

int add(int x,int y);
int add(int x,int y ,int z);

需要额外注意的是,不要将不同功能的函数定义为重载函数,以免出现对调用函数结果的误解、混淆。

(2)当使用函数重载时,应避免出现二义性,这也会使编译器出现语法错误。

声明:

int add(int x, int y=,int z=);

int add(int x);

调用:

add();

此时便会出现语法错误。

(3)总结出现二义性的情况:

1、形参个数一致,仅仅是形参名或者返回值不同
2、重载函数有一个形参有默认参数时
3、重载函数形参在同位置分别类型为传值或者传引用。

第一次作业:C++ 函数重载的更多相关文章

  1. C++第五次作业--运算符重载和函数重载

    C++ 运算符重载和函数重载 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

  2. const和非const函数重载

    成员函数后面加const,表示在该函数中不能对类的数据成员进行改变,比如下面的代码: #include <stdio.h> class A { private: mutable int a ...

  3. [js高手之路]性能优化技巧 - 缓存与函数重载实战

    所谓缓存,通俗点讲就是把已经做过的事情结果先暂时存起来,下次再做同样的事情,不用再重新去做,只要把之前的存的结果拿出来用即可,很明显大大提升了效率.他的应用场景非常广泛.如: 1.缓存ajax结果,大 ...

  4. OO第一次作业总结

    OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是Comput ...

  5. oo第一次作业

    前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持 ...

  6. C++开学第一次作业(5.4)

    开学第一次作业(5.4) 代码传送门 题目 Create a program that asks for the radius of a circle and prints the area of t ...

  7. BUAA-软件工程第一次作业

    软件工程第一次作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标 团队完成好的软件,并对自己作出规划 这个作 ...

  8. C++ 函数重载解析策略

    参考<C++ Primer Plus>(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译,人民邮电出版社.C++ 使用重载解析策略来决定为函数调用使用哪一个函数定义.重载解 ...

  9. 【C++】多态性(函数重载与虚函数)

    多态性就是同一符号或名字在不同情况下具有不同解释的现象.多态性有两种表现形式: 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定. ...

随机推荐

  1. UvaLive1347

    Programming contests became so popular in the year 2397 that the governor of New Earck — the largest ...

  2. 区间加值,区间gcd, 牛客949H

    牛客小白月赛16H 小阳的贝壳 题目链接 题意 维护一个数组,支持以下操作: 1: 区间加值 2: 询问区间相邻数差的绝对值的最大值 3: 询问区间gcd 题解 设原数组为\(a\), 用线段树维护\ ...

  3. Java static 关键字学习

    static:意为静态的,简单理解就是公共的.独立于实例变量之外的1.概述:static是Java中常用的关键字,一般用于变量.方法.静态代码块.内部类上.静态导包2.用法: a.用于变量上表示该变量 ...

  4. 替换文本:将文本文件中的所有src替换为dst

    题意: 将文本文件中的所有src替换为dst 方法一:使用String import java.io.File; import java.io.FileNotFoundException; impor ...

  5. go语言第一问:在其他地方执行编译go语言程序,结果会在哪个地方产生?

    1.我们看执行编译go语言程序中命令,没有找到exe文件.

  6. 苹果审核不通过,程序/游戏不兼容IPV6网络

    最近苹果升级的IOS10,所以那边网络环境变成IPV6,如果你的程序不兼容IPV6,苹果的程序会以这个不兼容的原因驳回审核. 那么如何让自己的程序兼容这个?方法其实C#本来已经提供给你的,而且很简单, ...

  7. Django框架Day2------之Template

    [转]http://www.cnblogs.com/alex3714/articles/5457672.html Django 模版基本语法 >>> from django.temp ...

  8. 利用Factory-boy来生成实例数据

    库和版本:Faker==2.0.0factory-boy==2.12.0 官方文档:https://factoryboy.readthedocs.io/en/latest/index.html 1. ...

  9. 阿里云MVP:开发者的超能力,用技术创造更好世界

    阿里云MVP:开发者的超能力,用技术创造更好世界 2019年3月,第8期阿里云MVP(最有价值专家)完成终审,截至目前,全球已有27个国家和地区.近500位云计算专家和优秀开发者成为阿里云MVP.阿里 ...

  10. 【机器学习PAI实战】—— 玩转人工智能之你最喜欢哪个男生?

    摘要: 分类问题是生活中最常遇到的问题之一.普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题.我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小.充足的样本,合适 ...