Вищезазначене створює об’єкт CPlayer у стеку, отже, йому це не потрібно new
. Вам потрібно використовувати лише new
якщо ви намагаєтесь виділити об'єкт CPlayer у купі. Якщо ви використовуєте розподіл купи, код буде виглядати так:
CPlayer *newPlayer = new CPlayer(position, attacker);
Зверніть увагу, що в цьому випадку ми використовуємо вказівник на об’єкт CPlayer, який потрібно буде очистити за допомогою відповідного виклику delete
. Об'єкт, виділений у стеку, буде автоматично знищений, коли він вийде за межі області дії.
Насправді було б простіше і зрозуміліше написати:
CPlayer newPlayer(position, attacker);
Багато компіляторів в будь-якому випадку оптимізують версію, яку ви опублікували до вищезгаданої, і її зрозуміліше читати.