C++中的引用与高级函数详解
作者:Wei&Yan
这篇文章主要介绍了C++中的引用与高级函数详解,概念:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间,需要的朋友可以参考下
引用
定义:给变量起别名。
语法:数据类型&别名=原名。
int a=10; int &b=a; //(此时的a和b都指向了同一块空间,都可对里面的元素进行修改)
对这两个变量名字任意一个进行修改,两变量的结果都会发生变化
引用注意事项
1.引用必须初始化
int a=10; int &b=a;(必须等于一个变量)
2.引用初始化后,不可以改变(永远指向最初初始化指向的空间),初始化后只能进行赋值操作
int a=10; int c=20; int &b=a; b=c;(将c赋值给b后,b和a的值都为20,但b指向的空间依然和a一样,不发生变化)
引用的做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参
优点:可以简化指针直接修改实参
/1.引用做函数的参数 void sweap(int& a, int& b)//可以当作函数传参的,传进去的是自己本身,在函数中对其进行修改后变量本身也会被修改(类似于地址传参) { int temp = a; a = b; b = temp; }
引用做函数的返回值:
int& Add(int a, int b) { static int c = a + b;//静态变量,存放在全局区域 return c; }
常量引用
void print(const int& val) {//为了防止引用传参的时候变量在函数中被修改而不影响自己本身,可以加入const。这样变量就不会被修改 val=20 cout << "val=" << val << endl; }
引用的本质:
在c++内部实现一个指针常量。
int a=10; int &b=a;//int *const b=&a; 若直接赋值给一个常数 const int &b=10;//int temp=10;const int &b=temp; 加入const后变为只读,不可修改。
函数高级
1.函数的默认参数
在c++中,函数的形参列表中的形参可以有默认参数
语法:返回值类型 函数名(参数=默认值){}
int func(int a, int b = 20) { return a + b; }
注意事项:
注意: 1.如果某个位置已经有了默认参数,那么从这个位置开始往后,从左到右都必须有默认值 eg: b有了默认值,后面的所以形参都要有默认值 int test1(int a, int b = 20, int c); 2.如果函数声明有默认参数,函数实现就不能有默认参数 声明和实现只能有一个有默认参数 int test2(int a = 20, int b = 239); int test2(int a, int b) { } int fun(int a=10,int b=20) { retutn a+b; } int a = 10, b = 29; 如果自己传入数据就用自己的数据,如果没有那么用默认数据。 //cout << "a+b=" << func(a,20) << endl;//结果=39 //cout << "a+b=" << func(a) << endl;//结果=30 return 0;
2.函数占位参数
c++中函数形参列表里面可以有占位参数,且传参的时候也当作一个形参,必选满足其形参数量 占位参数中可以有默认值 void test3(int a, int =20) { }
3.函数重载:
作用函数名可以相同,提高复用性
条件:
同一作用域下
函数名称相同
函数参数类型行不通,或者参数个数不同,或者顺序不同
//void func(double a, int b); //void func(int a, double); //函数重载的注意事项: //a.引用作为函数的重载的条件 void func(int &a);//int &a=10; 不合法 //调用:func(a); void func(const int& a);//const int &a=10; 合法 //调用:func(10); //b.函数重载碰到默认参数 void func2(int a); void func2(int a, int b = 10); //func2(10)//1,2都可以去调用,所以这样调用行不通。 //当函数重载碰到默认参数的时候会出现二义性。 //func2(10,20)//这种情况下可以行得通。
到此这篇关于C++中的引用与高级函数详解的文章就介绍到这了,更多相关C++高级函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!