首先,您可能知道 const
可以用来使对象的数据或指针不可修改,或者两者兼而有之。
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
不过,你也可以使用这样的语法:
Object const *obj; // same as const Object* obj;
唯一重要的是你把 const
关键字放在星号的哪一边。就我个人而言,我更喜欢把 const
放在类型的左边,以指定它的数据是不可修改的,因为我发现它在我从左到右的思维模式下读起来更好,但哪种语法是第一个出现的?
更重要的是,为什么有两种指定 const
数据的正确方法? 在什么情况下,如果有的话,您更喜欢或需要一种方法?
编辑:
因此,这听起来像是一个武断的决定,而编译器应该如何解释事物的标准早在我出生之前就已经起草了。因为 const
应用于关键字左边的内容(默认情况下?)我猜想他们认为添加 “捷径”以其他方式应用关键字和类型限定符没有坏处,至少在声明通过解析 a * 或 & 发生变化之前没有坏处。
我猜 C 区也是这样?