Avatar ·

क्या new ऑपरेटर में प्रकार के नाम के बाद कोष्ठक इनिशियलाइज़ेशन को प्रभावित करते हैं?

सभी को नमस्कार! मैंने C++ सीखना शुरू किया है और एक समझ से परे बिंदु पर आ गया हूँ। जब हम `new` के माध्यम से मेमोरी आवंटित करते हैं, तो मैं अक्सर लिखने के दो विकल्प देखता हूँ: ```cpp int* p1 = new int; // बिना कोष्ठक के int* p2 = new int(); // कोष्ठक के साथ ``` या क्लासेस के लिए: ```cpp MyClass* obj1 = new MyClass; MyClass* obj2 = new MyClass(); ``` ऐसा लगता है कि कोई अंतर नहीं है, लेकिन मैंने कहीं सुना है कि बिल्ट-इन टाइप्स (int, double आदि) के लिए कोष्ठक इनिशियलाइज़ेशन को प्रभावित कर सकते हैं। मैंने एक सरल उदाहरण पर जाँच की: ```cpp #include int main() { int* a = new int; int* b = new int(); std::cout << *a << " " << *b; // कभी-कभी मेमोरी कचरा और 0 प्रिंट करता है delete a; delete b; return 0; } ``` वास्तव में, `*a` एक अजीब मान दिखाता है, जबकि `*b` हमेशा शून्य होता है। ऐसा क्यों है? और क्लासेस के लिए भी इसका महत्व है? कृपया समझाएँ कि `new` के साथ और बिना कोष्ठक के इनिशियलाइज़ेशन कैसे काम करता है। और यदि हम `new int(42)` लिखें तो क्या होगा — यह स्पष्ट रूप से मान सेट करता है, है ना? पहले से धन्यवाद!