C++笔记总结——引用,指针与const

引用,指针与const

一、引用(严格来说这里指的是“左值引用”)

两条规则:
(1)定义引用时,程序会把引用和它的初始值对象一直绑定(bind)在一起
(2)引用绑定了一个对象后不能重新绑定到另一个对象

  规则(1),与拷贝不同,引用和对象绑定后,改变其中一个,另一个也会跟着改变。换而言之,引用是为一个已经存在的一个对象起的另一个名字(注意引用本身并非对象,引用即别名),所以引用只能绑定对象不能绑定字面值或者表达式的计算结果。例如,小明的别名叫小胖,叫小明起床,小明起床了,意味着小胖也起床了,小明和小胖是一回事。

	int ivalue = 1;
	int &ref1 = ivalue;
	cout << ref1 << endl;	//1
	ref1 = 2;
	cout << ivalue << endl; //2
	ivalue = 3;
	cout << ref1 << endl; //3
	
	int &ref2 = 10;  //错误,引用只能绑定对象不能绑定字面值或者表达式的计算结果```

  规则(2),引用绑定了一个对象后不能重新绑定到另一个对象,意味着在引用定义后不能再出现&ref1=XXX的赋值语句(注意区分&ref1=XXX和ref1=XXX),如果引用在定义时不初始化引用,那么这个引用永远都不能初始化了,因此引用在定义时必须初始化

	int &ref3;  //错误,引用在定义时必须初始化

  再来看看下面的例子:

	double dvalue = 3.14;
	int &ref4 = dvalue;	//错误,此处引用的初始值必须是int对象

  上述这个例子中,编译器为了让ref4绑定一个int类型的数,会做这样的处理:

	int temp = dvalue;
	int &ref4 = temp;

  这样ref4绑定的是一个临时量而非dvalue,那么改变ref4的值改变的也不是dvalue的值,那么定义ref4这个引用毫无作用也毫无意义,C++也把这种行为定为非法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值