const 修饰变量赋值的时刻

本文详细解析了C++中const变量的使用规则及其注意事项,包括初始化、赋值及通过引用改变值的情况。同时探讨了const指针和引用的特殊行为,并通过实例说明了这些特性如何在实际编程中应用。

const初始化能赋值,初始化完事儿,就不能赋值了。

而且不初始化还不行,必须初始化。

我居然才搞清这个问题、、、


#include <iostream>
#include<vector>

std::vector<int> array(50);
const int value = 50;
int main()
{
	array[10] = value;
	const std::vector<int>::iterator result= find(array.begin(), array.end(), value);

	if (result != array.end())
  	std::cout<< "找到"<< value <<"了" <<std::endl;
	system("pause");
	return 0;
}


这段代码就是能正常运行,因为赋值那个操作在初始化这个const变量的时候操作的。


#include <iostream>
#include<vector>

std::vector<int> array(50);
const int value = 50;
int main()
{
	array[10] = value;
	const std::vector<int>::iterator result;
	result= find(array.begin(), array.end(), value);
	
	if (result != array.end())
  	std::cout<< "找到"<< value <<"了" <<std::endl;
	system("pause");
	return 0;
}

这段代码就不能正常运行了,因为赋值的操作放在了const初始化的外面了。

还有事儿要说明~:

一、

int i = 5;
int& rInt = i;
const int& rConstInt = rInt;  
rInt = 30;  //这个时候:i,rInt,rConstInt都是30

由此可知,虽然const限制了rConstInt不可变,但仍可以通过修改rInt来改变rConstInt,因为rConsInt引用的是rInt的地址,跟rInt是绑定的。


二、

int i1 = 30;
int i2 = 15;
const int& rConstInt = i1 + i2;     //正确,用表达式为其赋值,值为45
i1 = 20;                             //此时 i1=20, rConstInt = 45,说明rConstInt绑定的是i1 + i2的临时变量

给const修饰的变量赋值时,若用表达式方式赋值。那个变量绑定的是一个临时变量。


三、对const T*&与T *const&的理解(对const解释得很完美的博客

等理解了再整理








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值