दो पंक्तियों निम्नलिखित के बीच क्या अंतर है?"int * एक = नई int" और "int * एक = नई int()" के बीच क्या अंतर है?
int *a = new int;
int *a = new int();
दो पंक्तियों निम्नलिखित के बीच क्या अंतर है?"int * एक = नई int" और "int * एक = नई int()" के बीच क्या अंतर है?
int *a = new int;
int *a = new int();
int *a = new int;
a
डिफ़ॉल्ट-प्रारंभ वस्तु (जो मूल्य यानी इस मामले में अप्रारंभीकृत वस्तु अनिश्चित मानक के अनुसार है) की ओर इशारा करते है।
int *a = new int();
a
मूल्य प्रारंभ वस्तु की ओर इशारा करते है (जो में शून्य प्रारंभ वस्तु इस मामले यानी मूल्य मानक के अनुसार शून्य है)।
पहले संस्करण का डिफ़ॉल्ट-initializes गतिशील int
, जिसके लिए निर्मित प्रकार जैसे int
किसी भी प्रारंभ प्रदर्शन नहीं करता आवंटित।
दूसरा संस्करण मूल्य initializes यह, int
के लिए जिसका अर्थ है शून्य प्रारंभ, यह मूल्य 0
दे रही है।
सी ++ 11 § 8.5, p7, सी ++ 11 § 8.5, पी 5, और सी ++ 11 § 8.5, मूल्य आरंभ, शून्य प्रारंभ करने के लिए p6, और डिफ़ॉल्ट-आरंभ क्रमश मामले ओपी में दिलचस्पी है (और मुझे अत्यधिक संदेह है)। – WhozCraig
ध्यान दें कि परीक्षण इस अंतर को बेनकाब कर सकते हैं नहीं: विपरीत स्वत: भंडारण के लिए, गतिशील रूप से आबंटित स्मृति अक्सर शून्य साधारण परीक्षण कार्यक्रमों में के रूप में खत्म हो जाएगा, और केवल बड़े कार्यक्रमों में "कचरा" हो जब पहले स्मृति पुन: उपयोग किया जाता है। – hvd