क्या 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)` लिखें तो क्या होगा — यह स्पष्ट रूप से मान सेट करता है, है ना? पहले से धन्यवाद!