Para começar, você provavelmente sabe que constpode ser usado para tornar os dados de um objeto ou um ponteiro não modificáveis ou ambos.
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ê colocou a constpalavra - chave. Pessoalmente, prefiro colocar constà 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 primeiro?
Mais importante ainda, por que existem duas maneiras corretas de especificar constdados e em que situação você preferiria ou precisaria uma sobre a outra, se houver?
Editar:
Parece que essa foi uma decisão arbitrária quando o padrão de como os compiladores deveriam interpretar as coisas foi elaborado muito antes de eu nascer. Como consté aplicado ao que fica à esquerda da palavra-chave (por padrão?), Acho que eles descobriram 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 por analisando um * ou & ...
Este foi o caso em C também, então eu estou assumindo?
constapós o tipo, por exemplo, em#define MAKE_CONST(T) T constvez de,#define MAKE_CONST(T) const TparaMAKE_CONST(int *)expandir corretamente para emint * constvez deconst int *.