2010-06-16 17 views
9
int *pi = new int(0); 

0 का महत्व क्या है? क्या इसका मतलब लंबाई 0 की पूर्णांक सरणी है?int * pi = new int (0) में int (0) का अर्थ ;?

+0

अच्छा सवाल। मूल पृष्ठभूमि है? बेसिक के सरणी प्रारंभकर्ता माता-पिता होते हैं जबकि अन्य सी भाषाएं स्क्वायर ब्रैकेट का उपयोग करती हैं। –

उत्तर

12

यह एक प्रारंभकर्ता (कन्स्ट्रक्टर पैरामीटर) है। नव निर्मित int का मूल्य 0 होगा।

+6

यह एक प्रारंभिक है। लेकिन यह एक निर्माता पैरामीटर नहीं है। टाइप 'int' में कोई कन्स्ट्रक्टर नहीं है। – AnT

+1

@AndreyT: क्या आप कृपया समझा सकते हैं? यदि निर्माता एक तर्क लेता है, तो इसे प्रारंभकर्ता से अलग कैसे किया जाएगा? इन दोनों के बीच वास्तविक अंतर क्या है? – understack

+6

@understack: "कन्स्ट्रक्टर" * वर्ग * प्रकारों में मौजूद एक विशेष सदस्य समारोह है। गैर-वर्ग के प्रकार (जैसे 'int') में कोई सदस्य फ़ंक्शन नहीं है और, ज़ाहिर है, इसमें कोई कन्स्ट्रक्टर नहीं है। जिस प्रक्रिया से आप यहां काम कर रहे हैं उसे * प्रारंभिक * कहा जाता है। प्रारंभिक एक गैर-तुच्छ अवधारणा है, इसे विभिन्न प्रकारों के लिए अलग-अलग परिभाषित किया गया है। क्लास प्रकार प्रारंभिकरण के लिए आमतौर पर (लेकिन हमेशा नहीं) का मतलब एक निर्माता कॉल होता है। उपरोक्त कारणों के लिए गैर-वर्ग प्रकार प्रारंभिकता के लिए किसी भी "रचनाकार" को शामिल किए बिना परिभाषित किया गया है। – AnT

7

इसका मतलब है कि आप एक int के लिए सूचक चाहते हैं, और कि int के मूल्य के लिए 0.

मैं एक बार एक बग पता चला कि किसी new char(10) लिखा था, जब वे new char[10] मतलब होने के लिए पर लंबे समय तक भी खो होने के लिए । कंपाइलर इसके साथ ठीक था लेकिन इससे बड़ी भ्रष्टाचार की समस्याएं आईं, जो स्पॉट करने में इतनी मुश्किल थीं। यह 10+ साल पहले था और हमारे पास अब हमारे पास उपकरण नहीं थे। इसे कभी नहीं भूलेंगे।

-1

मेरे लिए, 0 के महत्व को भी है कि किसी कह रहा है,

मैं जानबूझ कर इस 0

कुछ 'डिफ़ॉल्ट मान' जो [संपादित करें] की तुलना में

बल्कि होना चाहता हूँ कई मामलों की संभावना 0 कई डीबग संकलनों में 0 पर सेट की जाएगी, लेकिन रिलीज संकलन में अक्सर अनियमित स्मृति में पहले से मौजूद मान होगा।

+0

डिफ़ॉल्ट मान सिर्फ "अनियमित" है, इसलिए वहां कोई जानकारी नहीं है कि वहां क्या होगा। अधिकांश कार्यान्वयन आपको इसे देने से पहले कच्चे, गतिशील रूप से आवंटित स्मृति को प्रारंभ नहीं करते हैं (डीबग कार्यान्वयन के अपवाद के साथ, जिनमें से कुछ बग को ट्रैक करने में आपकी सहायता के लिए ध्वज मूल्यों का उपयोग करते हैं)। –

+0

ओउप्स, ठीक है, मैं इंट और अन्य वर्गों जैसे बूल जैसे डिफ़ॉल्ट मूल्यों को झूठ बोलने के बारे में सोच रहा था, खुद को विचलित कर दिया। –

+0

असल में, हाँ, वहां एक डिफ़ॉल्ट मान है - 'नया int() 'मूल्य-प्रारंभिक होगा। यह केवल 'नया int' है जो अनियमित है। –

संबंधित मुद्दे