什么是恒定的参考? (不是一个常数的参考)
一个相当理论上的问题……为什么常量引用的行为和常量指针不一样,我实际上可以改变它们指向的对象呢? 他们看起来像另一个简单的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
通过“不断的参考”我猜你的意思是“参考不变的数据”。 另一方面,指针可以是一个常量指针(指针本身是常量,而不是它指向的数据),指向常量数据的指针,或者两者兼而有之。