什么是恒定的参考? (不是一个常数的参考)

一个相当理论上的问题……为什么常量引用的行为和常量指针不一样,我实际上可以改变它们指向的对象呢? 他们看起来像另一个简单的variables声明。 为什么我会用它们? 这是一个简单的例子,我运行编译和运行没有错误:

int main (){ int i=0; int y=1; int&const icr=i; icr=y; // Can change the object it is pointing to so it's not like a const pointer... icr=99; // Can assign another value but the value is not assigned to y... int x=9; icr=x; cout<<"icr: "<<icr<<", y:"<<y<<endl; } 

最明确的答案。 “X&const x”有什么意义吗?

不,这是无稽之谈

要找出上面的声明是什么意思,请从右到左阅读:“x是对X的常量引用”。 但是这是多余的 – 引用总是常量,从某种意义上说,你永远不能重置引用,使其引用不同的对象。 决不。 有或没有const。

换句话说,“X&const x”在function上等同于“X&x”。 因为你在const之后joinconst,所以你不应该添加它:它会混淆人 – const会让一些人认为X是const的,就像你说过的“const X&x”一样。

声明icr=y; 不参考y ; 它将y的值赋给icr所指的variablesi

引用本质上是const ,也就是说你不能改变它们引用的内容。 有' const引用',这实际上是'引用const ',那就是你不能改变const引用的对象的值。 它们被声明为const int&int const&而不是int& const

什么是常量引用(不是对常量的引用)
常量引用实际上是对常量引用

一个常数的引用/对一个常量的引用表示为:

 int const &i = j; //or Alternatively const int &i = j; i = 1; //Compilation Error 

这基本上意味着,你不能修改引用指向的types对象的值。
例如:
试图通过const引用修改variablesj值(赋值1 ), i将导致错误:

分配只读引用“我”


 icr=y; // Can change the object it is pointing to so it's not like a const pointer... icr=99; 

不改变引用,它指定引用所引用的types的值。 不能引用任何其他variables,而不是在初始化时绑定的variables。

第一条语句y 分配i
第二条语句99赋值给i

通过“不断的参考”我猜你的意思是“参考不变的数据”。 另一方面,指针可以是一个常量指针(指针本身是常量,而不是它指向的数据),指向常量数据的指针,或者两者兼而有之。