Das obige erstellt ein CPlayer-Objekt auf dem Stapel, daher wird es nicht benötigt new
. Sie müssen nur verwenden, new
wenn 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.