तो A
एक पॉड प्रकार है, तो new A
एक नया A
ऑब्जेक्ट को आवंटित लेकिन एक अनिश्चित मूल्य के साथ छोड़ देंगे, नहीं तो new A
डिफ़ॉल्ट प्रारंभ हो जाएगा नई वस्तु।
सभी मामलों में new A()
मूल्य नया A
ऑब्जेक्ट प्रारंभ करेगा।
यह पीओडी प्रकारों के लिए स्पष्ट रूप से अलग व्यवहार है लेकिन गैर-पीओडी, गैर-यूनियन वर्ग प्रकारों को बिना किसी घोषित कन्स्ट्रक्टर के प्रभावित करता है।
उदा।
struct A
{
int a;
std::string s;
};
A
एक उपयोगकर्ता के घोषित निर्माता के बिना एक गैर पॉड वर्ग प्रकार है। जब A
डिफ़ॉल्ट प्रारंभिक स्पष्ट रूप से परिभाषित कन्स्ट्रक्टर कहलाता है जिसे s
(एक गैर-पीओडी प्रकार) के लिए डिफ़ॉल्ट कन्स्ट्रक्टर कहते हैं, लेकिन a
प्रारंभ नहीं किया गया है।
जब एक A
है मूल्य, प्रारंभ के रूप में यह नहीं किया जाता-घोषित निर्माता है, इसके सभी सदस्यों को मूल्य प्रारंभ जो कि s
के लिए डिफ़ॉल्ट निर्माता कहा जाता है का मतलब है और a
शून्य प्रारंभ है कर रहे हैं।
आईएसओ 14882: 2003 संदर्भ:
5.3.4 [expr.new]/15: कैसे एक new
अभिव्यक्ति द्वारा आवंटित वस्तुओं प्रारंभकर्ता छोड़ दिया जाता है जो इस पर निर्भर प्रारंभ कर रहे हैं, कोष्ठक की एक जोड़ी या अन्यथा।
8,5 [dcl.init]/5: का अर्थ शून्य से प्रारंभ, डिफ़ॉल्ट प्रारंभ और मूल्य आरंभ कर देगा।
12.1 [कक्षा.क्टर]/7,8: उपयोगकर्ता द्वारा लिखित कन्स्ट्रक्टर का रूप जो एक स्पष्ट रूप से परिभाषित डिफ़ॉल्ट कन्स्ट्रक्टर के व्यवहार से मेल खाता है।
12.6.2 [class.base.init]/4: किसी कन्स्ट्रक्टर की सदस्य प्रारंभकर्ता सूची में सूचीबद्ध कैसे आधार और सदस्य प्रारंभ किए गए हैं।
स्रोत
2009-10-17 09:52:41
यह सही है। –
हम्म, कोई संदर्भ? – hasen
और, शब्द वास्तव में भ्रमित है। पीओडी क्या है? – hasen