//《求三个数中的最大数》
// 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){
}
*/
/**
* 注意:重载函数的参数和个数或者类型必须至少有其中之一不同,函数返回值类型可以相同也可以不同。但不允许参数的个数和类型都相同而只有返回类型不同。
*/