C++中引用的用法(一)

原文链接:C++中引用的基本用法

一、基本用法

创建一个对象的引用只需把声明符写成&val的形式即可:

int iVal = 1024;
int &refVal = iVal;

创建引用时,编译器并不是把拷贝一个值赋给引用,而是把引用和初始的对象绑定在一起,相当于只是给对象起了一个别名。可以通过引用来操作初始化对象,并且通过引用来操作对象时,相当于直接对对象进行了操作。

#include<iostream>
using namespace std;

int main() {
    int iVal = 1024;
    int &refVal = iVal;
    printf("%d %d\n", iVal, refVal);  // 1024 1024
    refVal += 1;
    printf("%d %d\n", iVal, refVal);  // 1025 1025
}

以引用作为函数的形参时,在函数内部改变形参的值,函数外部变量的值也会改变:

void add(int &x) {
    x += 1;
}

int main(){
    int iVal = 1024;
    add(iVal);
    printf("%d\n", iVal); // 1025
}

可以用引用给引用赋值,实际上就是把引用绑定的对象作为初始值:

int iVal = 10;
int &refVal = iVal, &refVal2 = refVal;  //refVal == refVal2 == 10

二、注意事项

1 引用必须初始化

因为引用只是和对象绑定在一起了,而不是拷贝值,一旦初始化完成,引用将永远和初始对象绑定在一起。所以引用在使用时必须初始化,并且引用不能重新赋值。

int iVal = 1, iVal2 = 2;
int &refVal = iVal;
int &refVal2;  //错
refVal = iVal2;  //错

2 不能使用引用的引用

引用本身不是一个对象,所以不能定义引用的引用

3 引用对象的类型必须匹配

引用对象的数据类型必须和初始化对象严格匹配。

int iVal = 1024;
double &x = iVal;  //错误

4 不能使用字面量初始化引用类型

引用类型的初始值必须是一个对象,不能为一个字面量。

int &refVal = 10;  //错误
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容