C++ 函数的重载


//《求三个数中的最大数》

//  main.cpp

//  Sectond_C++

//

//  Created by 周双建 on 16/3/14.

//  Copyright © 2016 周双建. All rights reserved.

//

#include <iostream>

using namespace std;

// 正规的写法

//整数

int ZSJMax(int a ,int b,int c){

    if (b>a) a = b;

    if (c>a) a = c;

    return a;

}

//实数

float ZSJMax(float a,float b,float c){

    if (a>b) b = a;

    if (c>b) b = c;

    return b;

}

//长整数

long ZSJMax(long a,long b,long c){

    if (b>c) c = b;

    if (a>c) c = a;

    return c;

}

int main(int argc, const char * argv[]) {

    // 声明变量

    int z ,s,j;

    float Z,S,J;

    long z1,s1,j1;

    // 变量的输入

    cin>> z>>s>>j;

    cin>>Z>>S>>J;

    cin>>z1>>s1>>j1;

    // 函数的调用

    // 整数

    int m_zsj;

    m_zsj = ZSJMax(z, s, j);

    cout <<"Max_1="<< m_zsj<<endl;

    // 实数

    float f_zsj ;

    f_zsj = ZSJMax(Z , S , J );

    cout <<"Max_2="<<f_zsj<<endl;

    // 长整数

    long int l_zsj;

    l_zsj = ZSJMax(z1, s1, j1);

    cout<<"Max_3="<<l_zsj<<endl;

    

    return 0;

}




//程序的解读

/*

 第一:概念

     重载:允许一个运算符或者函数可以用于不同的场合,不同的场合有不同的含义。这就叫做重载。

 第二:特别之处

     C++ 允许在同一作用域用同一函数名定义多个函数,这些函数的参数和参数类型不相同,这些同名的函数用来实现不同的功能。

 第三:这是使用,函数的先声明,在调用。

 */


/*******************************/

//用函数重载,求两个整数或者三个整数的最大者

#include <iostream>

using namespace std;

int main_1(int argc, const char * argv[]){

    int n ,o ,p;

    int ZSJ_Max(int a ,int b, int c);

    int ZSJ_Max(int a,int b);

    // 三个参数

    int Max_object;

    cin>>n>>o>>p;

    Max_object = ZSJ_Max(n,o,p);

    cout<<"Max_1 = "<<Max_object<<endl;

    // 两个参数

    cout<<"Max_2 = "<<ZSJ_Max(n,o)<<endl;

    return 0;

}

//整数(3个参数)

int ZSJ_Max(int a ,int b , int c){

    if(a>c) c = a;

    if(b>c) c = b;

    return c;

}

//整数(2个参数)

int ZSJ_Max(int d ,int e){

    if (d > e) e  = d;

    return e ;

}



//程序解读

/*

 第一:这是函数的调用在前,声明在后。

 第二:声明的两个函数名字相同。这就是函数的重载。(相同的函数,有不同的作用)

 第三:输出一个函数,可以不声明变量,直接用函数。

 第四:上面函数,既然相同,为什么不写成一个通用的。

 */


//《函数模板》

#include <iostream>

using namespace std;

template <typename T >

T ZSJ_Max_Template (T a ,T b,T c){

    if(a>b) b = a ;

    if(c>b) b = c ;

    return b;

}

int main_2(){

    int i = 1 , j= 8, k = 10;

    double z = 0.01 , h = 0.67 , g = 9.78;

    float  a = 2.1 , b = 3.4 , c =4.6 ;

    cout<<"int_Max = "<<ZSJ_Max_Template(i, j, k)<<endl;

    cout<<"double_Max = "<<ZSJ_Max_Template(z, h, g)<<endl;

    cout<<"float_Max = "<<ZSJ_Max_Template(a, b, c)<<endl;

    return 0;

}

// 程序解读

/*

 第一:

 输出的结果:

 int_Max = 10

 double_Max = 9.78

 float_Max = 4.6

 Program ended with exit code: 0

 

 第二:通用模板

 

 template <typename T >

 T ZSJ_Max_Template (T a ,T b,T c){

 

 }

*/

/**

 *  注意:重载函数的参数和个数或者类型必须至少有其中之一不同,函数返回值类型可以相同也可以不同。但不允许参数的个数和类型都相同而只有返回类型不同。

 */


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值