【发布时间】:2018-05-10 01:08:15
【问题描述】:
我看到一些类似的代码:
Foo const& foo = val; // (A)
const Foo& foo = val; // (B)
只是const的位置不同。
虽然两者都可以正常工作,但我只想知道正确的语法。
我从R->L读到如下。
(A) foo 是 const 对类型 Foo 的引用 - 不确定 val 是否是 const
(B) foo 是对const 的引用类型Foo - 意思是val 是const
鉴于引用不是对象,从技术上讲,所有引用都是const(它们不能引用另一个对象),
语法观点,(A) Foo const& foo = val; 是否被视为“令人困惑”的定义?
只需使用以下内容:
const Foo& foo = val; // referring to const Foo
Foo& foo = val; // referring to non-const Foo
【问题讨论】:
-
由于从语言的角度来看它们是相同的,所以关于使用哪一个的问题变得基于意见。
标签: c++ reference language-lawyer