Ich betrachte einen älteren Code und stolperte auf x=new(Foo);
(beachten Sie die Klammern um den angegebenen Typ). Ich habe Variationen getestet und es scheint das gleiche wie x=new Foo;
Foo ist eine Nicht-POD-Datenstruktur. Ein Programm für externe Speicherlecks markiert die Zeile - es reserviert Speicher für einen CORBA-out-Parameter, so dass der Aufrufer sich um das Löschen kümmern sollte, aber das ist ein separates Problem mit vielen indirekten Ebenen.
Ist meine Analyse richtig und akzeptabel?
Es ist richtig, aber der Stil ist zumindest ungewöhnlich.
Klammern um einen vollständigen Typnamen sind manchmal erlaubt, aber in diesem Fall sind sie überflüssig. Es ist, als würde man Klammern um einen Ausdruck legen, der nicht benötigt wird. Vielleicht wäre die nächste Analogie
%Vor% Verwirrenderweise werden die Parens für den Operator sizeof
benötigt, wenn Sie einen Typnamen übergeben, aber nicht, wenn Sie ihm einen Ausdruck übergeben. Persönlich sehe ich das als eine Inkonsistenz, und würde nicht wählen, es auf den Rest der Sprache zu verbreiten.
Tags und Links c++ syntax new-operator