Указатель this
объявляется следующим образом:
Entity* const this
, что означает, что это указатель на текущий объект, где значение самого указателя не может быть изменено (т.е. адрес, который this
указывает на то, что не может быть изменено).
В первом примере вы объявляете переменную с именем e, которая является ссылкой на указатель сущности (const), то есть ссылкой на (неизменяемый) (указатель) на сущность, которая соответствует типу this .
Во втором примере вы объявляете ссылку на указатель сущности , где значение / адрес этого фактического указателя может измениться. Ключевое слово const здесь не определяет состояние адреса указателя, а скорее указывает, что сама ссылка не изменится, т.е. не будет ссылаться на новую сущность *.
Фактически, как уже указывалось, добавленная "const" для уточнения ссылки не будет компилироваться (поскольку она избыточна и не имеет смысла, ссылки не могут быть изменены), и поэтому следующее также неверно:
int x = 5;
int& const y = x;
Hope это помогло!