अक्सर डेटा संरचनाओं का वैध प्रारंभ सभी सदस्यों को शून्य पर सेट करना है। सी ++ में प्रोग्रामिंग करते समय भी, किसी बाहरी एपीआई के साथ इंटरफेस करने की आवश्यकता हो सकती है जिसके लिए यह मामला है।सभी शून्यों पर किसी ऑब्जेक्ट को प्रारंभ करना
वहाँ के बीच किसी भी व्यावहारिक अंतर है: दोनों का उपयोग कर, चुनने के लिए एक तरीका है जिसके किसी दिए गए आवेदन के लिए अधिक उपयुक्त है के साथ लोगों को खोजना करो
some_struct s;
memset(&s, 0, sizeof(s));
और बस
some_struct s = { 0 };
? (उम्मीद है कि यह समझा जाता है कि यह केवल वर्तमान में पीओडी संरचनाओं पर लागू होता है; यदि उस संरचना में सी ++ std :: स्ट्रिंग थी तो आपको सभी तरह के विनाश मिलेगा।)
मेरे लिए, ज्यादातर सी ++ प्रोग्रामर के रूप में मेमसेट का अधिक उपयोग नहीं करता है, मैं कभी भी फ़ंक्शन हस्ताक्षर के कुछ नहीं हूं, इसलिए मुझे लगता है कि दूसरा उदाहरण कम टाइपिंग, अधिक कॉम्पैक्ट, और इससे भी अधिक स्पष्ट होने के अलावा उपयोग करना आसान है क्योंकि यह "ऑब्जेक्ट" कोड की अगली पंक्ति की प्रतीक्षा करने और देखने के बजाए घोषणा में सही "शून्य में शुरू किया गया है," ओह, यह ऑब्जेक्ट शून्य प्रारंभ हुआ है। "
सी ++ में कक्षाएं और structs बनाते समय मैं प्रारंभिक सूचियों का उपयोग करता हूं; मैं सी ++ में उपलब्ध होने के मुकाबले तुलना में उपरोक्त दो "सी स्टाइल" प्रारंभिकताओं पर लोगों के विचारों के बारे में उत्सुक हूं क्योंकि मुझे सी पुस्तकालयों के साथ कई इंटरफ़ेस पर संदेह है, भले ही हम ज्यादातर सी ++ में कोड करते हैं।
संपादित करें: नील बटरवर्थ this question उत्पन्न, फॉलोअप में, मुझे विश्वास है कि इस सवाल का एक दिलचस्प परिणाम है।
सी ++ में, शून्य प्रारंभिकता अधिक कार्यात्मक उपयोग नहीं करती है, क्योंकि कन्स्ट्रक्टर यह सुनिश्चित करेगा कि यह प्रकार जाने के लिए तैयार है। – Puppy
@DeadMG: पीओडी प्रकार के निर्माता क्या करते हैं? –
@ डैश-टॉम-बैंग: यह बिल्कुल कुछ भी नहीं करता है। – AnT