我的同事在启发他人提问方面0-2落后(1, 2),所以我想给他一个机会追赶。
我们最近的争论是关于将"const
"放在声明的哪个位置的风格问题。
他认为应该将其放在类型之前或指针之后。理由是这是其他人通常采用的方式,其他风格容易引起混淆。因此,指向常量int
的指针和指向int
的常量指针分别应为:
const int *i;
int * const i;
然而,我仍然感到困惑。我需要一些一致且易于理解的规则,而我能够理解 "const
" 的唯一方法是它放在所修改的内容之后。const
有一个例外情况,允许它放在最终类型的前面,但那只是个例外,如果我不使用它会更容易理解。
因此,指向常量 int
的指针和一个指向 int
的常量指针分别为:
int const * i;
int * const i;
采用这种方式的另一个好处是更容易理解更深层次的间接引用。例如,指向常量指针int
的指针会清晰明了地表示为:
As an added benefit, doing things this way makes deeper levels of indirection easier to understand. For example, a pointer to a constant pointer to int
would clearly be:
int * const * i;
我的观点是,如果有人按照自己的方式学习,他们很容易弄清楚上述内容的意思。
最终问题在于,他认为在 int
之后添加 const
太难看了,对可读性也非常有害,应该在样式指南中禁止这种写法。当然,我认为如果有必要,指南应该建议按照我的方式进行,但无论如何,我们都不应该 禁止 这种做法。
编辑: 我得到了很多好答案,但没有一个真正针对我最后一段话(“最终问题”)进行回答。很多人主张保持一致性,但是这种情况下保持一致性是否值得我们把另一种方法给禁止呢?我们只需建议避免使用即可。