函数与重载
1.参数
你不能将一个方形的栓放在圆形的洞里 ——俗语
c++函数传参有两种方式:
- 值传递(无法直接改变变量)
- 引用传递(简化版指针,直接控制变量)
//值传递
int app(int a,double b)
//引用传递
int app(int& a,double& b)
#include <iostream>
using namespace std;
void input(int &a,int &b);
void change(int &a,int &b);
void show(int a,int b);
int main() {
int a,b;
input(a,b);
change(a,b);
show(a,b);
return 0;
}
void input(int &a,int &b)
{
cout << "请输入两个整数";
cin >> a
>> b;
}
void change(int &a,int &b)
{
int temp;
temp = b;
b = a;
a = temp;
}
void show(int a,int b)
{
cout << a <<endl << b;
}
陷阱:无意义的局部变量:
如果希望改变变量,一定要使用引用传递;
函数重载:
int ave(int n,int m)
{
return (n + m)/2;
}
int ave3(int n,int m,int a)
{
return (n + a + m)/2;
}
//上面两个函数其实可以用重载描述
int ave(int n,int m)
{
return (n + m)/2;
}
int ave(int n,int m,int a)
{
return (n + a + m)/2;
}
重载可以让n一个函数名一对多如下,同一个函数名可以输送两个实参或三个实参:
#include <iostream>
using namespace std;
double avg(int a,int b,int c);
double avg(int a,int b);
int main() {
int a,b,c;
cin >> a >>b;
cout << avg(a,b);
cin >>a >>b >>c;
cout << avg(a,b,c);
return 0;
}
double avg(int a,int b)
{
return (a+b)/2.0;
}
double avg(int a,int b,int c)
{
return (a+b+c)/3.0;
}
函数签名:函数名与函数参数列表的类型组成;
陷阱:不要将毫无关系的两个函数使用同一个函数名;
在使用重载的时候最好把过程写的详细一些,