一、函数的参数传递 引用
#include <iostream>
using namespace std;
void swap(int a, int b)
{
int t = a;
a = b;
b = t;//只交换了a和b,之后形参a,b消亡
}
int main()
{
int x = 5, y = 10;
cout << "x=" << x << "y=" << y;
swap(x, y);//实参5,10初始化形参a,b
cout << "x=" << x << "y=" << y;
return 0;
}
运行结果:x, y的值没有交换 。因为函数调用时,实参x, y初始化形参a, b,形参交换了值但是形参在函数运行结束后就消亡了,对x, y并无影响。
此时只需要将形参变为实参的引用,引用即取别名,a, b交换就表示x, y交换
void swap(int &a, int &b)
{
int t = a;
a = b;
b = t;
}
二、 函数重载
1.函数重载概念:用同一个函数名定义不同的函数
当函数名和不同的参数搭配时函数的含义不同
函数重载是由函数名和参数列表决定的
2.函数重载至少满足下面的一个条件:
- 参数个数不同
- 参数类型不同
- 参数顺序不同
3. 当重载函数遇上默认参数时
int func(int a, int b, int c=0)
{
return a + b;
}
int func(int a, int b)
{
return a + b;
}
int main()
{
func(1,2); // 哪个函数会被调用
return 0;
}
结果是调用失败,因为调用不明确,两个函数都可以调用