C++中引用的详细介绍

目录

一.引用的概念

二.引用即别名

三.const的引用


一.引用的概念

引用:为对象起的另外一个名字,引用类型引用另外一种类型

引用的本质是一个指针常量(指针的指向不能改变,指针指向的值可以改变)

引用的类型必须与其所引用对象的类型一致,但是有例外

下面我们来列举一些例子 

	int a = 10;
	int& b = a;    //b指向a(b就是a的另一个名字)   当b=20时,a=20
	int& c;        //错误,引用必须初始化

在定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用,一旦初始化完成引用将和它的初始值对象一直绑定在一起

因为无法令引用重新绑定到另外一个对象,因此引用必须初始化

二.引用即别名

定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象上进行的 

	int a = 10;
	int& b = a;    //b指向a
	b = 20;        //这里b改为20,a也变成20

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

注意:引用的初始值,必须是一个对象

三.const的引用

可以把引用绑定到const对象上,就像绑定到其他对象上一样,称之为对常量的引用

与普通引用不同的是,对常量的引用不能被作用修改它所绑定的对象

	const int a = 10;
	const int& b = a;   //引用的对象是常量
	b = 20;             //错误,b是对常量的引用,必能修改
	int& c = a;         //错误,非常量引用不能指向一个常量对象

类型保持一置的例外: 

在初始化常量引用时,允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可

	int i = 10;
	const int& r1 = i;    //允许将const int& 绑定到一个普通int对象上
	const int& r2 = 20;   //正确,r2是一个常量引用
	const int& r3 = r1 * 2; //正确,r3是一个常量引用
	int& r4 = r1 * 2;     //错误,r4是一个非常量引用

再来一个例子

	//这样写法是正确的,但是r1精度缺失
    double d = 3.14;
	const int& r1 = d;

这个转换过程是,编译器产生了一个临时量,来进行类型转换

	const int temp = d;    //由双精度浮点数生成一个临时的整型常数
	const int& r1 = temp;  //r1绑定这个临时量

 临时量:当编译器需要一个空间来暂存表达式的求值结果时临时创建的一个未命名的对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值