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;
}
#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解释得很完美的博客)
等理解了再整理