Erstellen Lassen Sie uns sagen Sie eine Reihe von objectes auf dem Heap wie so schaffen: aufWarum C++ nicht zulassen, dass `new` Konstruktor aufzurufen, wenn Arrays
myClass * objectPtr = new myClass[10];
new
nur ruft den Standardkonstruktor und (basierend meine Lesungen) erlaubt keinen anderen Konstruktor aufgerufen werden.
Gibt es irgendeine Logik dahinter, warum new
keinen anderen Konstruktor aufrufen kann? Es wäre besser scheinen so etwas wie
myClass * objectPtr = new myClass[10](12);
zu tun, im Gegensatz zu
myClass * objectPtr = new myClass[10];
objectPtr[0] = myClass(12);
objectPtr[1] = myClass(12);
...
'-1' für rohen Zeiger und' new' in einer Codezeile. Auch die Frage ist nicht besonders vernünftig, wenn man bedenkt, dass es nicht nur rohe Zeiger, Verfall und nutzlose Zuordnungen verwendet, sondern sich auch auf die Erzeugung von Roh-C-Arrays konzentriert, die im Grunde genommen irrelevant ist. IOW die Antwort könnte sein "weil keine C-Arrays verwenden" (und alle oben genannten Sachen). –
FWIW, kann man das mit einem 'std :: vector' machen zB' std :: vector foo (10, myClass (12)); ' –
AndyG
_'Warum erlaubt C++' new' keinen Aufruf von Konstruktoren beim Erstellen von Arrays '_ Da dies nicht der tatsächlichen Syntax des Operators 'new []()' entspricht. –