【问题标题】:const T & vs T & const . what is the difference?常量 T & 与 T & 常量。有什么区别?
【发布时间】:2014-03-17 13:09:11
【问题描述】:

我知道

f(const T& obj) // (1)
g(T const& obj) // (2)

是一样的(我们不能改变fg的body中obj的值)。

但是什么

h(T & const) // (3)

真的是什么意思?

另一个例子:

k(T const * const & const obj_p) // (4)

first const : 你不能改变实际 obj (*obj_p) 的值

second const: 你不能改变* (obj_p)的值

第三个常量:?

【问题讨论】:

标签: c++ pointers reference constants


【解决方案1】:

第三个例子:

h(T & const) 

does not really compile.

第四个例子:

k(T const * const & const obj_p)

does not compile either,但如果您删除最后一个 const 限定符:

k(T const * const & obj_p)

它是一个 const 指针(指针地址不能更改)到一个 const T(指向的对象不能更改)作为引用传递。

欲了解更多信息see this answer

【讨论】:

    【解决方案2】:

    & 之后有const 意味着它绑定到变量名,因此表明在初始化后不能使该名称引用其他内容。但无论如何,所有引用都是如此,所以即使你的编译器接受& const,它也是多余的,而且就像&一样会更清楚。

    【讨论】:

    • 不仅是多余的,也不属于语言语法。
    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 2012-03-10
    • 2012-10-22
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多