<C++学习二十>C++中函数重载的理解

摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)。

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

void Swap1(int* a,int* b);
void Swap2(float* a,float* b);
void Swap3(char* a,char *b);
void Swap4(double* a,double *b);

  我们可以看出这样的代码不美观而且程序猿也带来了很多的不便,于是在C++中人们提出了用一个函数定义多个函数,也就是所谓的函数重载。

一、函数重载定义

  函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同,常用来处理时限功能类似数据类型不同的问题。

  在C++中不仅函数可以重载,运算符也可以重载。例如:

  运算符>><<。既可以做移位运算符,也可以做输出,输入运算符。

注意:重载函数的参数个数,参数类型或参数顺序三中中必须有一个不同

#include <Windows.h>
#include <iostream>

using namespace std;

int add(int a,int b){
    return a + b;
}

double add(double a,double b){
    return a + b;
}

float add(float a,float b){
    return a + b;
}

int main(){
    cout << add(1,2) << endl; //调用第一个add函数
    cout << add(3.5,4.5) << endl; //调用第二个add函数
    cout << add(2.22,3.33) << endl; //调用第三个add函数

    system("pause");
    return 0;
}

  我们可以看到上面的程序是通过定义相同数目不同类型的参数来实现重载的。

#include <Windows.h>
#include <iostream>

using namespace std;

int max(int a,int b,int c){
    if(b > a)
        a = b;
    if(c > a)
        a = c;
    return a;
}

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

int main(){
    int a = 10;
    int b = 20;
    int c = 30;
    cout << max(a,b,c) << endl; //调用第一个函数
    cout << max(a,b) << endl; //调用第二个函数

    system("pause");
    return 0;
}

  上面的代码是形参数目的不同从而实现的函数重载。

函数重载规则:

  1、函数名必须相同;

  2、参数列表必须不同(个数不同、类型不同、参数排列顺序不同等);

  3、函数返回类型可以相同也可以不相同;

  4、仅仅返回类型不同不足以成为函数的重载。

二、函数重载的作用:

  重载函数通常用来在同一个作用域内用同一个函数名命名一组功能相似的函数,这样减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

三、函数重载是一种静态多态:

   1、多态:用同一个东西表示不同的形态;

  2、多态分为:

    静态多态(编译时的多态);

    动态多态(运行时的多态);

  3、函数重载是一种静态多态;

posted @ 2019-01-11 19:10  daisy_ai  阅读(296)  评论(0)    收藏  举报