Object obj();
वस्तु का एक इन्स्टेन्शियशन नहीं है, यह एक समारोह obj
के घोषणा जो कोई तर्क लेता है और Object
का एक उदाहरण देता है ।
Object obj;
एक default initialization
, अंतर्निहित निर्माता (इस प्रकार, डिफ़ॉल्ट अंतर्निहित निर्माता या कोई पैरामीटर के साथ उपयोगकर्ता परिभाषित गैर explicit
निर्माता) के साथ यानी इन्स्टेन्शियशन है, और इस घोषणा गैर पॉड Object
सदस्यों की अंतर्निहित कंस्ट्रक्टर्स कहता है, और के लिए पीओडी-प्रकार यह उन्हें प्रारंभ नहीं करता है (वे शून्य नहीं होंगे)। यह Object
के सदस्यों के सदस्यों के लिए सही है और इसी तरह से।
Object obj{};
(यदि Object
एक समग्र है) एक सूची प्रारंभ या कुल प्रारंभ है। जिन्हें वे अलग-अलग कहते हैं, खाली ब्रेसिज़ के लिए, व्यवहार समान होता है: पीओडी-प्रकार के सभी सदस्य शून्य-प्रारंभिक होते हैं, और गैर-पीओडी डिफ़ॉल्ट-प्रारंभिक होते हैं।
Object obj = Object();
सैद्धांतिक रूप से एक दो कदम कथन है: 1) बनाने के अस्थायी Object
उदाहरण; 2) फिर कॉपी कन्स्ट्रक्टर/चालक कन्स्ट्रक्टर/कॉपी ऑपरेटर/चाल ऑपरेटर द्वारा ओबीजे का निर्माण करें। लेकिन व्यावहारिक रूप से यह प्रतिलिपि/चाल-elision के साथ दिमाग में बनाया जाएगा (यह सभी आधुनिक कंप्यूटर्स पर डिफ़ॉल्ट रूप से सभी ऑप्टिमाइज़ेशन के साथ सक्षम है, आपको स्पष्ट रूप से एलिशन को अक्षम करना होगा)। इस संस्करण का बेहतर उपयोग न करें।
पूर्व निष्कर्ष
चुनें
Object obj;
या
Object obj{};
पहले चुनें यदि आप कोई अपने पॉड-सदस्यों zeroifying साथ तेजी से प्रारंभ करना चाहते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि Object
के तत्कालता के बाद उसके सभी पीओडी-सदस्य शून्य होंगे तो दूसरा चुनें।
व्यावहारिक रूप से, पहले अपने सदस्यों से पढ़ने से पहले, दोनों प्रकार के सभी आधुनिक ओएस पर रनटाइम में समान गति होती है।
तो ...
निष्कर्ष
उपयोग मूल्य-प्रारंभ:
Object obj{};
जब तक आप विदेशी सिस्टम पर एक वास्तविक समय प्रदर्शन की जरूरत है।
ठीक है, फिर जब मैं 'ऑब्जेक्ट obj() 'का उपयोग करता हूं तो मुझे कोई समस्या क्यों मिलती है लेकिन' ऑब्जेक्ट obj = ऑब्जेक्ट() 'का उपयोग करते समय प्राप्त नहीं होता है? –
@ghostman अच्छी तरह से आपको 'ऑब्जेक्ट obj;' का उपयोग करना चाहिए, बिना किसी चिपकने वाले – dabadaba
@juanchopanza के बिना, मैंने देखा कि आप सही हैं जो ब्रांड्स सही हैं, वे अलग हैं। मैंने माना ओपी ने कहा 'ऑब्जेक्ट obj',' ऑब्जेक्ट obj() 'नहीं। – dabadaba