Das obige erstellt ein CPlayer-Objekt auf dem Stapel, daher wird es nicht benötigt new. Sie müssen nur verwenden, newwenn Sie versuchen, ein CPlayer-Objekt auf dem Heap zuzuweisen. Wenn Sie die Heap-Zuordnung verwenden, sieht der Code folgendermaßen aus:
CPlayer *newPlayer = new CPlayer(position, attacker);
Beachten Sie, dass wir in diesem Fall einen Zeiger auf ein CPlayer-Objekt verwenden, das durch einen übereinstimmenden Aufruf von bereinigt werden muss delete. Ein auf dem Stapel zugewiesenes Objekt wird automatisch zerstört, wenn es den Gültigkeitsbereich verlässt.
Eigentlich wäre es einfacher und offensichtlicher gewesen zu schreiben:
CPlayer newPlayer(position, attacker);
Viele Compiler optimieren ohnehin die Version, die Sie oben gepostet haben, und es ist klarer zu lesen.