c++函数重载

作者: 檀香静雪 | 来源:发表于2020-07-12 18:12 被阅读0次

引入

假设如下函数来比较两个int型数据的大小

int max(int a, int b) {
    return a > b ? a : b;
}


当我们需要再增加一个比较两个doublechar类型的数据时,我们的函数名会变得臃肿,如下所示:

int max_int(int a, int b) {
    return a > b ? a : b;
}
int max_double(double a, double b) {
    return a > b ? a : b;
}
int max_char(char a, char b) {
    return a > b ? a : b;
}

当我们需要比较更多类型数据的大小时,我们的max_xxx函数会变得越来越多。在进行调用时会越来越麻烦。

函数重载定义

函数重载指的是一个或多个函数,名字相同,然而参数个数以及参数类型不同,我们就称之为函数重载。

将上面的代码改写为如下形势:

int max(int a, int b) {
    return a > b ? a : b;
}
int max(double a, double b) {
    return a > b ? a : b;
}
int max(char a, char b) {
    return a > b ? a : b;
}

这是我们在调用函数时就不需要用函数名去区分该调用哪个函数,此时程序会根据我们的参数个数以及参数类型去选择调用的函数。

如下函数调用代码所示:

#include<iostream>
using namespace std;
int max(int a, int b) {// 1
    return a > b ? a : b;
}
int max(double a, double b) {// 2
    return a > b ? a : b;
}
int max(char a, char b) {// 3
    return a > b ? a : b;
}
int main() {
    max(2, 3);//调用 1
    max('a', 'b');//调用 3
    max(2.3, 3.2);//调用 2
    return 0;
}

如上程序,在执行max(2, 3);时,参数为两个int类型的,所以自动匹配到调用第1个max函数。其他两次调用类似。

函数重载使得函数的命名变得简单,调用过程也变得简洁。

注意事项

考察如下函数调用语句:

max(2, 3.1);

当我们进行上述的函数调用时,就会产生二义性。

此时编译器不知道是将3.1转换为int去调用max(int a, int b) ,还是将2转化为double去调用 max(double a, double b)

因此,在调用重载函数时要注意去避免产生二义性。

相关文章

  • 2.C++对C的扩展

    重载(overload) C++中,引用了函数重载的概念,函数名同名,参数列表不同形成重载。重载规则: 函数名相同...

  • Vue3源码中的TypeScript重载函数的作用

    TypeScript重载函数的作用案例 C++中的一个概念(百度百科): 函数重载一般指重载函数。 重载函数是函数...

  • 30小时快速精通C++拾遗

    C语言不支持重载,为什么C++支持重载? C语言不支持函数重载,编译时函数名加上_或者其他标识C++为什么能够重载...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • Callback / Callable 类型

    重载函数,和php的伪重载函数 重载函数a. c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的...

  • C++基础语法-重载、extern

    函数重载 今天我们来深入学习下C++的基础语法函数重载。函数重载定义:只要函数名相同,参数个数不同,参数类型不同,...

  • C++ 重载 [] = == !=

    一 重载 [] = == != 1.1 重载[] C++ 规定,下标运算符[ ]必须以成员函数的形式进行重载。该重...

  • 2020-07-06----《C++类的学习》

    函数重载:同名不同参。 C++类的特点:封装、继承、多态。 //多态与函数重载是啥关系? 虚函数:和软件架构相关 ...

  • C语言到C++(4) - 重载

    C++中新增了重载功能,重载分为两部分,函数重载和运算符重载。 1. 函数重载 在C语言编程中,我们经常遇到一组函...

网友评论

    本文标题:c++函数重载

    本文链接:https://www.haomeiwen.com/subject/tqhncktx.html