C++ --引用与函高级

news/2024/10/18 9:20:17/

引用

定义:给变量起别名。

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

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;
}

 

 引用做函数的返回值:

2.引用做函数的返回值
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;//结果=30return 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)//这种情况下可以行得通。


http://www.ppmy.cn/news/530659.html

相关文章

Debian 10 安装和配置Nginx的详细步骤

在本篇博客中&#xff0c;我们将深入学习如何在Debian 10上安装、配置和管理Nginx&#xff0c;一个流行的开源Web服务器和反向代理服务器。我们将涵盖Nginx的安装、基本配置、添加自定义配置文件以及设置开机自动启动等操作。 步骤&#xff1a; 更新系统&#xff1a; 使用以下…

Matlab快速入门——矩阵的高级学习

学习目标&#xff1a;掌握高级的矩阵知识 逆矩阵和广义逆矩阵 clear all; Amagic(4) B[2 4;6 4] Cinv(A) inv(B) Dpinv(B) B*D*B 求矩阵的秩 跟线性相关有关系 反映的是是否是线性相关 满秩则线性无关 clear all; Amagic(4) B[5 4 3;1 2 3;7 7 7] r1rank(A…

解决Steam绑定手机令牌的问题

手机安装steam打开后黑屏解决方案 下载一个UU加速器加速之后再打开steamApp就好了 steam手机令牌添加验证器收不到短信怎么办? 登录电脑steam&#xff0c;设置-界面-繁体中文&#xff0c;重新登录一下steam&#xff0c;然后重启手机steam&#xff0c;收到短信后再登录电脑ste…

qq手机令牌 for android3.3 官方安装版,原QQ安全助手|QQ手机管家 for Android 安卓版v3.3.0 - PC6安卓网...

【基本简介】 QQ安全助手是集QQ手机令牌、对骚扰来电和短信进行拦截以及黑白名单管理于一身手机安全客户端软件。 手机令牌 手机令牌是第二代密码保护的一种密保手段&#xff0c;安装成功后会在手机上显示6位动态密码。绑定QQ号码后&#xff0c;您可以通过验证动态密码&#xf…

java手机令牌下载_qq手机令牌java,qq手机令牌java下载|qq手机令牌java 3.2_星空下载站...

qq手机令牌是一款能够对qq账户起到保护作用的软件&#xff0c;这款应用软件拥有强大的功能&#xff0c;保护了用户的qq账号和qq财产安全。这款应用软件拥有极好的系统兼容性&#xff0c;保证了用户在不同设备上都能正常运行&#xff0c;流畅运行的系统软件&#xff0c;为用户带…

android动态令牌生成器,基于Android令牌的动态密码认证系统的研究与实现

摘要&#xff1a; 随着信息技术的不断发展,人们的日常生产活动已经离不开计算机网络,由于计算机网络的开放性,各类安全威胁随之而来,对于存储在系统中的重要信息一旦泄露,会给用户造成重大损失.身份认证作为网络安全的基础和核心,对建立完善的安全机制意义重大,是当前网络安全的…

Android手机令牌,WEB安全之硬件绑定变向思路

【问题引出】 由于公司主要是基于虚拟交易的电商业务&#xff0c;WEB系统一直存在帐号硬件绑定的需求&#xff0c;以提升系统的安全性和可靠性&#xff0c;防止密码盗用和木马侵入导致的财产损失。 大家也知道&#xff0c;手机端&#xff08;不管是android还是IOS&#xff09;或…

java接口令牌_关于java:KeyCloak用户验证和获取令牌

首先,我对Keycloak非常陌生,请问如果我要问的问题可能是错的。 我已经安装了Keycloak服务器,并且可以使用以下命令访问Web UI: http:// localhost:8008 / auth 我的要求是通过将其传递给k来验证领域用户 Keycloak API并从那里获取令牌作为响应,然后将此令牌传递给我的其…