我相信我已经找到了很多人似乎对const
感到困惑的部分原因,那就是术语"const指针"似乎有点违反直觉的命名法,因为当说(即使是那些理解微妙之处的人)时,似乎通常是指"指向const的指针"或:
const Type * foo;
然而,当没有解析时,先验的约定知识(例如:const指针",在术语"const指针"中,人们可能会解析为"const"限定了"指针",因此期望它表示"const指针到类型"或:
Type * const foo;
我的问题是:
- 是"const指针"接受术语"
const Type *
"尽管看似是一个用词不当? - 如果是,讨论中提到的"常量指针指向类型"或"
Type * const
"的常规术语是什么?
是的,const Type* foo
通常被称为const指针。
这种类型的常量之所以有一个名字,是因为这种类型的常量比另一种更具粘性。如果得到指向const对象的指针,则不能将其转换为非const对象。但是如果你得到一个本身是const的指针,但是指向一个可变对象,你总是可以把它复制到一个可写字段。
最后,指向const的指针表示指向对象是const。它不是,它可以改变,你只是有一个对象的只读视图。从这个意义上说,constness更适用于指针而不是对象本身。
是的-通常"const指针"是指指向const对象的指针,而不是指向const对象的指针,可能是因为第一种情况更常见,所以可以理解为它分配较短的形式。
通常对于const-pointer-to-type
,您要么直接说,要么坚持使用指示符:T* const
。很少讨论这样的指针,因此据我所知,它没有特别常见的表达式。
const是一个所谓的限定符。
在const类型* var的情况下,这意味着type的值是const,所以它被称为const(ant) type指针。
在类型* const var的情况下,它意味着var的值是const,因此它被称为类型指针 const(ant)。
注意两者之间的细微差别