C++下的引用类型

什么是引用?

引用类型也称 别名,这样说就比较好理解了吧,他是一个比较有意思的东西。

在C++中你可以把它看做是另外的一种指针,通过引用类型,我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。引用对象采用类型名加上&符号,和名称的方式定义。例如:(int &test;),这里我们就定义了一个名为test的引用,但是int &test;这样的定义方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test = 变量名;)

#include <iostream>
using namespace std;

int main() {
	int a = 10;
	int &test = a;
	test = test+2;

	cout<<&a<<"|"<<&test<<"|"<<a<<"|"<<test<<endl;
	cin.get();
}

观察并编译运行上面的代码,你会发现&a和&test的地址是相同的,a和test的值显示也是一样的。


结合const来说:const修饰如果在引用上会有一个特别之处,它的奥秘就在于可以进行不同类型的对象的初始化,而这一切在普通变量的操作上是不可能实现的。


	#include <iostream>
	using namespace std;
	
	int main() {
		int a = 10;
		const double &test = a + 1.2f;
		cout << &a << "|" << &test << "|" <<a <<"|"<< test << endl;
		cin.get();
	}

这里如果去掉 const 是会报错的。

这里就实现了用int给double赋值的功能。


道理是这样的,const修饰过后的引用在编译器内部是这样变化的:


int  a = 10;

const double &test = a+1.2f;


这样一段代码在编译器认为却是这样工作的:

int a = 10;

int temp = a;

const double &test = temp + 1.2f;

这里其实是把a的值付给了一个临时变量,而后test 获得的却是temp+1.2f改变的是temp而不是a,所以出现了a和test显示的值是不一样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值