【C++进阶】引用 函数提高
创始人
2024-03-22 04:20:27
0

文章目录

      • 一 、引用
        • 1.1 引用的基本使用
        • 1.2 引用的注意事项
        • 1.3 引用做函数参数
        • 1.4 引用的本质 :指针的常量
        • 1.5 常量引用
      • 二、函数提高
        • 1 函数默认参数
        • 2 函数占位参数
        • 3 函数重载

一 、引用

1.1 引用的基本使用

作用:给变量起别名

语法:数据类型 & 别名=原名

示例:

	int a = 10;int & b = a;cout <<"b= "<< b << endl;b = 20;cout << "a = " << a << endl;'''输出''b= 1a = 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;
}

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...