Avatar ·

Beeinflussen Klammern nach dem Typnamen beim new-Operator die Initialisierung?

Hallo zusammen! Ich habe angefangen, C++ zu lernen und bin auf einen unklaren Punkt gestoßen. Wenn wir Speicher mit `new` allozieren, sehe ich oft zwei Schreibweisen:\n\n```cpp\nint* p1 = new int; // ohne Klammern\nint* p2 = new int(); // mit Klammern\n```\n\nOder für Klassen:\n\n```cpp\nMyClass* obj1 = new MyClass;\nMyClass* obj2 = new MyClass();\n```\n\nEs scheint keinen Unterschied zu geben, aber ich habe irgendwo gehört, dass bei built-in types (int, double usw.) die Klammern die Initialisierung beeinflussen können. Ich habe es mit einem einfachen Beispiel überprüft:\n\n```cpp\n#include \nint main() {\n int* a = new int;\n int* b = new int();\n std::cout << *a << " " << *b; // Manchmal wird Müll und 0 ausgegeben\n delete a;\n delete b;\n return 0;\n}\n```\n\nTatsächlich zeigt `*a` einen seltsamen Wert, während `*b` immer Null ist. Warum ist das so? Und bei Klassen e