C++中的引用

本文深入讲解C++中引用的概念及应用,包括引用的基本规则、如何作为函数参数使用、以及常引用的特点等。通过实例帮助理解引用与指针的区别,探讨在实际编程中如何合理运用引用以提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引用的概念
引用的本质是指针。
变量名,本身就是一段内存的引用,即别名(alias)。此处引入的引用,是为已有变量起一个别名。
声明如下:

int main(){
    int a;
    int &b = a;
}

1.1.规则
1.1.1.引用没有定义,类型和原类型一致,且不分配内存,与被引用的变量有相同的地址。
1.1.2.声明的时候必须初始化,一经声明不得变更。
1.1.3.可对引用再次引用,多次引用的结果,是某一个变量的别名。
1.1.4.&符号前有数据类型是是引用,其它皆是取地址。

int main(){
    int a,b;
    int &r = a;//必须初始化。
    int &r = b;//错误,不能更改原有的引用关系。
    float &rr = b;//错误,引用类型不匹配。
    cout << &a << &r << endl;//变量与引用具有相同的地址。
    int &ra = r;//可对引用多次引用。表示变量a有两个别名,分别是ra和r。
}

1.2.引用的应用
C++很少使用独立变量的引用,如果使用某一个变量,就直接使用它的原名,没必要使用它的别名就引用。

值作函数参数:
    void swap(int a,int b);//无法实现两数据的交换。
    void swap(int *a,int *b);//开辟了两个指针空间实现交换。
引用作函数参数:
void swap(int &a,int &b)//可以用引用解决的问题尽量避免用指针来解决。

1.3.引用的提高
引用的本质是指针,C++对裸露的内存地址(指针)做了一次包装。
1.3.1.可以定义指针的引用,但不能定义引用的引用。

int a;
int *p = &a;
int * &rp = p;//ok.
int & r = a;
int && rr = r;//错误,**对引用取地址,建立引用的指针没有意义**,所以不能定义引用的引用。

1.4.常引用(const)
const 引用使用的比较多。它可以防止对象的值被随意修改。
(1)const对象的引用必须是const的,将普通引用绑定到const对象时不合适的(因为const是不能被修改的)。
(2)const引用可使用相关类型的对象(常量,非同类型的变量或表达式)初始化。

const int &a = 2;const int &b = a;都是合法的。
int i = 5;
const int &j = i+5;//输出i = 5,j = 10;

1.5.尽量使用const可避免无意修改数据的编程错误。

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值