我知道
f(const T& obj) // (1)
g(T const& obj) // (2)
是相同的。(我们无法在f
和g
的正文中更改obj的值。
但是什么
h(T & const) // (3)
真的意味着什么?
另一个例子:
k(T const * const & const obj_p) // (4)
第一个const:你不能改变实际obj(* obj_p)
的值第二个const:你不能改变*
(obj_p)
第三个const:?
答案 0 :(得分:1)
const
之后的&
意味着它绑定到变量名称,因此建议在初始化之后不能使该名称引用其他内容。但无论如何,所有引用都是如此,所以即使你的编译器接受& const
,它也是多余的,并且会更加清晰,只有&
。
答案 1 :(得分:1)
第三个例子:
h(T & const)
第四个例子:
k(T const * const & const obj_p)
does not compile either,但是如果删除最后一个const
限定词:
k(T const * const & obj_p)
它是一个const指针(指针地址不能改变)到const T(指向对象不能改变)作为参考传递。
了解更多信息see this answer。