const-pointer-to-type,指向const的指针和const讨论的术语

时间:2011-08-05 19:52:32

标签: c++ terminology const conventions

我相信我遇到了很多人似乎对const感到困惑的部分原因,即“ const指针”一词似乎有点违反直觉当说(即使是那些了解细微之处的人)似乎经常意图表示“指向const ”或“

”时的命名法
  const Type * foo;

但是,如果在没有先验约定的情况下进行解析(例如新手的),则可以在术语“ const pointer ”中进行解析解析“const”限定“指针”,因此希望它表示“ const-pointer-to-type ”或:

  Type * const foo;

所以我的问题是:

  1. const pointer ”是否接受了“const Type *”的术语,尽管看似用词不当?
  2. 如果是,那么讨论中提到的“ const-pointer-to-type ”或“Type * const”的常规术语是什么?

3 个答案:

答案 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)。

注意两者之间的细微差别。