X const &x == X & const x 吗?

Is X const &x == X & const x?

本文关键字:const      更新时间:2023-10-16

我知道X & const x是多余的。这是不行的!但是我想知道X const &xX & const x的区别是什么?第一个表达式是否表示x是对常数class X的引用?

X const &x是对const X的引用,而X & const x是非法的。没有const引用,因为引用不是从mutable开始的。

从右到左读:X& const x - x是对x类型对象的常量引用,这没有意义,引用根据定义是常量。X const& x - x是对x类型常量的引用。

引用本身总是常量。在初始化之后,您不能将引用更改为引用其他内容。

是第一个表达式表示引用引用的是一个常量

X const&,如果对X的引用是不允许通过引用修改的。您可以将其视为只读视图。X本身是否为const并不反映在引用类型中。注意,您可以使用 const和非const对象初始化X const&:

X a;
X const b;
X const& r = a;   // read-only-view on non-const X
X const& s = b;   // read-only-view on const X
重要的是,您不能通过引用来更改X ,但是您可以直接更改a,并且该更改将通过r反映。

X& const是被标准禁止的,因为引用本身无论如何都不能被修改。