Sprite sprite = entity->GetSprite();
при этом создается копия объекта Sprite
, возвращаемого GetSprite
, с использованием экземпляра-копира `Sprite.
Редактирование копии не должно приводить к изменению оригинала, если только вынаписали Sprite
неправильно, или вы запутались между ссылкой, значением и семантикой указателя.
Sprite const& sprite = entity->GetSprite();
это возвращает ссылку на содержащийся Sprite
, через который вы не можете его изменить.
Если вы хотите заблокировать копирование Sprite
с, вы можете сделать:
Sprite(Sprite const&) = delete;
, но я бы посоветовал разрешить перемещение Sprite
с:
Sprite(Sprite&&) = default;
, особенно предварительно- c ++ 17 (когда гарантированное исключение делает его менее важным).