X const &x == X & const x 吗?
Is X const &x == X & const x?
本文关键字:const 更新时间:2023-10-16
我知道X & const x
是多余的。这是不行的!但是我想知道X const &x
和X & 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
是被标准禁止的,因为引用本身无论如何都不能被修改。