2010-08-24 13 views
5

मैं सी ++ के लिए नौसिखिया हूँ।सी ++ डिफॉल्ट कन्स्ट्रक्टर हमेशा कॉल किया जाता है, जैसा कि सी ++ प्राइमर में दर्शाया गया है?

डिफ़ॉल्ट निर्माता जहां एक चर परिभाषित किया गया है की परवाह किए बिना प्रयोग किया जाता है:

सी ++ प्राइमर 4 संस्करण (स्टेनली Lipmann) पेज 52 पर, वहाँ एक वाक्य है जो कहता है: इस बेवकूफ सवाल कोई आपत्ति नहीं है ।

क्या कोई और कुछ समझा सकता है? यह बयान ऐसा लगता है कि इसमें कुछ याद आ रहा है।

+0

मुझे लगता है कि आपको वाक्य में कुछ और संदर्भ डालना होगा, क्योंकि यह हमेशा सत्य नहीं है कि ** डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग किया जाता है ** हमेशा ... –

+4

वे कहते हैं, कोई बेवकूफ सवाल नहीं है, लेकिन स्पष्ट रूप से वे गलत हैं। इस साइट का इरादा है, इसलिए प्रश्न और उत्तर न केवल उस व्यक्ति की सहायता करते हैं जो वास्तव में एक विशेष प्रश्न पूछता है, लेकिन कोई भी जो समान या समान प्रश्न का उत्तर ढूंढ रहा है। अब इसके बारे में सोचो। विषय "सी ++ नौसिखिया: बेवकूफ सवाल" कितना उपयोगी है। समुदाय के लिए कुछ करो। सोचें कि आप किस बारे में पूछ रहे हैं और ठीक से पूछते हैं, और समुदाय आपकी मदद कर सकता है। –

+0

कौन सा अध्याय/खंड? मुझे लगता है कि वाक्य – Chubsdad

उत्तर

2

संभवतः आपका मतलब स्टेनली लिप्पमैन है?

वैसे भी

, हालांकि मैं एक प्रति काम की जांच करने, मुझे लगता है था वह इसका मतलब है अगर आप की तरह कुछ है नहीं है:

myclass X; 

... X वस्तु डिफ़ॉल्ट ctor साथ प्रारंभ हो जाएगा , इस पर ध्यान दिए बिना कि ऑब्जेक्ट वैश्विक है (किसी भी फ़ंक्शन के बाहर), फ़ंक्शन के लिए स्थानीय, या फ़ंक्शन के भीतर किसी अन्य दायरे में स्थानीय (उदाहरण के लिए, for लूप में)।

+0

ऐसा लगता है कि इसकी आवाज होगी। अगर कोई अन्य कन्स्ट्रक्टर अनुरोध नहीं किया जाता है तो उस सरणी और ढेर चर/सरणी भी डिफ़ॉल्ट रूप से निर्मित किए जाएंगे। –

3

आप एक वर्ग Object है:

class Object 
{ 
public: 
    int x; 

    Object() { x = 5; } 
}; 

और आप इस तरह एक समारोह में एक दृष्टांत:

void foo() 
{ 
    Object obj; 
    // obj.x == 5 
} 

डिफ़ॉल्ट निर्माता इस्तेमाल किया जाएगा। ,

class AnotherObject 
{ 
public: 
    Object obj; 
}; 

void bar() 
{ 
    AnotherObject another; 
    // another.obj.x == 5 
} 
0

$ 12,1

डिफ़ॉल्ट निर्माता (12.1), निर्माता कॉपी और असाइनमेंट ऑपरेटर कॉपी (12.8): वस्तुओं भी जब आप उन्हें एक और वर्ग के भीतर घोषित करने और है कि अन्य वर्ग का दृष्टांत डिफ़ॉल्ट निर्माता के साथ निर्माण कर रहे हैं और विनाशक (12.4) विशेष सदस्य कार्य हैं। कार्यान्वयन इन सदस्य कार्यों को कक्षा प्रकार के लिए घोषित करेगा जब कार्यक्रम स्पष्ट रूप से उन्हें घोषित नहीं करता है, जैसा कि 12.1 में उल्लेख किया गया है। कार्यान्वयन उन्हें परिभाषित करेगा यदि उन्हें का उपयोग किया गया है, जैसा कि 12.1, 12.4 और 12.8 में निर्दिष्ट है। कार्यक्रम स्पष्ट रूप से घोषित विशेष सदस्य कार्यों को परिभाषित नहीं करेंगे। कार्यक्रम स्पष्ट रूप से घोषित विशेष सदस्य कार्यों का उल्लेख कर सकते हैं। [उदाहरण: एक कार्यक्रम स्पष्ट रूप से घोषित विशेष सदस्य समारोह में सदस्य को एक सूचक के पते को स्पष्ट रूप से कॉल कर सकता है या बना सकता है।

4

पुस्तक से:

प्रत्येक वर्ग भी परिभाषित कर सकते हैं, तो प्रकार का एक चर परिभाषित किया गया है, लेकिन एक प्रारंभकर्ता प्रदान नहीं की है क्या होता है। एक वर्ग एक विशेष निर्माता को परिभाषित करके ऐसा करता है, जिसे डिफ़ॉल्ट कन्स्ट्रक्टर के नाम से जाना जाता है। इस कन्स्ट्रक्टर को डिफॉल्ट कन्स्ट्रक्टर कहा जाता है क्योंकि यह "डिफ़ॉल्ट रूप से" चलाया जाता है; यदि कोई प्रारंभकर्ता नहीं है, तो इस कन्स्ट्रक्टर का उपयोग किया जाता है। डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग इस पर ध्यान दिए बिना किया जाता है कि एक चर परिभाषित किया गया है।

(मेरा इटालिक्स)।

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

पुस्तकें जो कह रही हैं, उन सभी स्थितियों में जहां डिफॉल्ट कन्स्ट्रक्टर उपयोग किया जाता है, यह वैरिएबल परिभाषित किया जाता है (अंदर या बाहर के कार्यों, अंदर या बाहर कक्षाओं के अंदर, ब्रेसिज़ के अंदर लूप, चयन कथन या यहां तक ​​कि नग्न ब्रेसिज़, और इसी तरह)।

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