我相信我遇到了很多人似乎对const
感到困惑的部分原因,即“ const指针”一词似乎有点违反直觉当说(即使是那些了解细微之处的人)似乎经常意图表示“指向const ”或“
const Type * foo;
但是,如果在没有先验约定的情况下进行解析(例如新手的),则可以在术语“ const pointer ”中进行解析解析“const”限定“指针”,因此希望它表示“ const-pointer-to-type ”或:
Type * const foo;
所以我的问题是:
const Type *
”的术语,尽管看似用词不当?Type * const
”的常规术语是什么?答案 0 :(得分:3)
是的 - 通常“const指针”表示指向const-object的指针,而不是指针-as-const,这可能是因为第一种情况更常见,所以分配给它是可以理解的缩短形式。
通常对于const-pointer-to-type
,你要么只是说,要么坚持使用指示符:T* const
。讨论这样的指针是非常罕见的,所以据我所知,没有特别常见的表达方式。
答案 1 :(得分:3)
是的,const Type* foo
通常称为const指针。
这种常量有一个名字的原因是因为这种常量比另一种更粘。如果获得指向const的指针对象,则无法将其转换为非常量对象。 但是如果你得到一个指针,它本身就是const,但指向一个可变对象,你可以将它复制到一个可写字段。
最后,指向const的指针表明指向的对象是const。它不是,它可以改变,你只有一个对象的只读视图。从这个意义上说,constness更多地应用于指针而不是对象本身。
答案 2 :(得分:1)
const是一个所谓的限定符。它有资格接下来。
对于const类型* var,它意味着type的值是const,因此它被称为 const(ant)类型 指针。
在类型为* const var的情况下,这意味着var的值是const,因此它被称为 类型指针 const(ant)。
注意两者之间的细微差别。