一 、引用
1.1 引用的基本使用
作用:给变量起别名
语法:数据类型 & 别名=原名
示例:
int a = 10; int & b = a; cout <<"b= "<< b << endl; b = 20; cout << "a = " << a << endl; '''输出'' b= 1 a = 20
1.2 引用的注意事项
- 引用必须要初识化: 错误写法:int &b;
- 引用一旦初始化化就不可以更改了,即b是a的别名,就不能是c的别名了
1.3 引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参
优点:简化指针修改实参
using namespace std; // 交换函数 // 1、值传递 void mySwap01(int a, int b) { int tamp; tamp = a; a = b; b = tamp; cout << "mySwap01—a= " << a << endl; cout << "mySwap01—b= " << b << endl; } //2、地址传递 void mySwap02(int *a, int *b) { int tamp; tamp = *a; *a = *b; *b = tamp; } //3、引用传递 void mySwap03(int &bei_a, int &bei_b) { int tamp; tamp = bei_a; bei_a = bei_b; bei_b = tamp; cout << "bei_a=" << bei_a << endl; } int main() { system("color 1E"); int a = 10; int b = 20; //mySwap01(a, b); //值传递,形参不会影响实参 //mySwap02(&a, &b); //地址传递,形参会修改实参的值 mySwap03(a, b); //引用传递,形参也会修饰实参 cout << "a= " << a << endl; cout << "b= " << b << endl; return 0; }
1.4 引用的本质 :指针的常量
所有的指针操作都有编译器执行
system("color 1E"); int a = 10; int & ref = a; cout << "a = " << a << endl; ref = 20; cout << "a = " << a << endl; cout << "ref = " << ref << endl;
1.5 常量引用
作用:修饰形参,防止误操作
void showValue(const int &val) { //val = 1000;//在打印的函数修改数据,则原a的值也修改了 /* 在函数上加const,则不能修改 */ cout << " val = " << val << endl; } int main() { system("color 1E"); //防止误操作 int a = 10; //const:编译器将代码修改临时的值,int temp=10;const int & ref=temp ->const & ref=10;加入const只能读,不能修改 showValue(a); system("pause"); return 0; }
二、函数提高
1 函数默认参数
函数的形参列表的形参是可以有默认值的。
语法:返回值类型 函数名 (参数=默认值){ }
注意:
- 如果某个位置已经有默认参数,那么从这个位置之后,都必须有默认值
- 如果函数的声明有默认参数,函数的实现就不能有默认参数.实现声明只能有一个默认参数(函数的声明int func(int a=10, int b=20)
//函数的默认参数 //如果我们自己传入数据,就用自己的数据,如果没有,就用默认值 //返回值类型 函数名 (参数=默认值){ } int func(int a, int b=20, int c=30) { return a + b + c; } int main() { system("color 1E"); cout << "a+b+c = " << func(10,30) << endl; system("pause"); return 0; }
2 函数占位参数
作用:形参列表可以有占位参数,用来做占位,调用函数时必须填补该位置
语法:返回值类型 函数名 (数据类型){ } --------》现阶段了解
//函数的占位参数 //返回值类型 函数名 (数据类型){ } void func(int a ,int) { cout << "this is func" << endl; } int main() { system("color 1E"); func(10,2); system("pause"); return 0; }
3 函数重载
作用:函数名可以相同,提高复用性
函数重载满足条件:
- 同一作用域下
- 函数名称相同
- 函数参数类型不同 或者 个数不同 或者 顺序不同
注意:
函数的返回值类型(void\int)不可以作为函数重载的条件
void func() { cout << "func的调用" << endl; } void func(int a) { cout << "func的调用—int" << endl; } void func(double a) { cout << "func的调用—double" << endl; } int main() { system("color 1E"); func(0.2); func(); func(2); system("pause"); return 0; }