Const antes ou depois da const?
Para começar, você provavelmente sabe queconst
pode ser usado para tornar os dados de um objeto ou um ponteiro não modificável ou ambo
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
No entanto, você também pode usar a sintaxe:
Object const *obj; // same as const Object* obj;
A única coisa que parece importar é de que lado do asterisco você coloca oconst
palavra-chave. Pessoalmente, prefiro colocarconst
à esquerda do tipo para especificar que os dados não são modificáveis, pois acho que eles são melhores na minha mentalidade da esquerda para a direita, mas qual sintaxe veio primeir
Mais importante ainda: por que existem duas maneiras corretas de especificarconst
data e em que situação você prefere ou precisa um sobre o outro, se houve
Editar
Parece que essa foi uma decisão arbitrária quando o padrão de como os compiladores devem interpretar as coisas foi elaborado muito antes de eu nascer. Desde aconst
é aplicado à esquerda da palavra-chave (por padrão?) Acho que eles acharam que não havia mal em adicionar "atalhos" para aplicar palavras-chave e digitar qualificadores de outras maneiras, pelo menos até que a declaração seja alterada analisando um * ou & ...
Este foi o caso em C também, então estou assumindo?