Klammern nach dem Typnamen bei new: Gibt es einen Unterschied?
Hallo zusammen! Ich habe angefangen, C++ zu lernen und bin auf eine seltsame Sache mit dem `new`-Operator gestoßen. Wenn ich Speicher für ein Objekt reserviere, sehe ich zwei Varianten:\n\n```cpp\nint* p1 = new int; // ohne Klammern\nint* p2 = new int(); // mit Klammern\nint* p3 = new int(42); // mit Wert\n```\n\nOder für Klassen:\n```cpp\nMyClass* obj1 = new MyClass;\nMyClass* obj2 = new MyClass();\nMyClass* obj3 = new MyClass(42);\n```\n\nAnscheinend funktionieren alle drei Varianten, aber ich habe bemerkt, dass sich `new int` und `new int()` in manchen Fällen unterschiedlich verhalten. Zum Beispiel habe ich gelesen, dass für built-in types (int, double usw.) `new int()` den Speicher mit Null initialisiert, während `new int` Müll hinterlässt. Stimmt das?\n\nUnd was ist mit benutzerdefinierten Klassen? Gibt es einen Unterschied zwischen `new MyClass` und `new MyClass()`, wenn die Klasse einen Konstruktor hat?