首先,您可能知道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
应用于关键字的左侧(默认情况下是?),我猜他们认为添加“快捷方式”以其他方式应用关键字和类型限定符至少在声明更改之前一直没有危害。解析*或&...
我也假设在C中也是这种情况?
const
在类型之后添加,例如#define MAKE_CONST(T) T const
而不是,#define MAKE_CONST(T) const T
这样MAKE_CONST(int *)
它将正确扩展为int * const
而不是const int *
。