Для начала вы, вероятно, знаете, что 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
и в какой ситуации вы бы предпочли или нуждались друг в друге, если они есть?
Edit:
Итак, похоже, что это было произвольное решение, когда стандарт того, как компиляторы должны интерпретировать вещи, был составлен задолго до моего рождения. Поскольку const
применяется к тому, что слева от ключевого слова (по умолчанию?), Я предполагаю, что они полагали, что не было вреда при добавлении "ярлыков", чтобы применять ключевые слова и типы классификаторов другими способами, по крайней мере, до тех пор, пока не будет изменения декларации путем разбора a * и...
Так было в C, а затем я предполагаю?