c++ - Issue with Default Arguments -


स्टैन्ली बी। लिपमान द्वारा बुक सी ++ प्राइमर में , * जोस ए एलोज़ी

क्लास कन्स्ट्रक्टर्स के अध्याय 14.2 में यह कहा गया है:

क्या हम एक प्रारंभिक संतुलन को निर्दिष्ट करने के लिए समर्थन भी प्रदान करना चाहिए लेकिन कोई ग्राहक नाम नहीं? जैसे ही होता है, वर्ग विनिर्देश यह स्पष्ट रूप से अस्वीकार करता है। डिफ़ॉल्ट द्वितीय तर्क के साथ हमारा दो पैरामीटर कन्स्ट्रक्टर क्लास खाते के डेटा सदस्यों के लिए शुरुआती मान स्वीकार करने के लिए एक पूर्ण इंटरफ़ेस प्रदान करता है जो उपयोगकर्ता द्वारा सेट किया जा सकता है:

  वर्ग खाता { सार्वजनिक: // डिफ़ॉल्ट कन्स्ट्रक्टर ... खाता (); // पैरामीटर नाम घोषणा में आवश्यक नहीं हैं खाता (const char *, double = 0.0); Const char * नाम () {वापस _name; } // यह किस लिए है?? // ... निजी: // ...};   

निम्नलिखित दोनों कानूनी खाता वर्ग ऑब्जेक्ट परिभाषाएं हमारे निर्माता के लिए एक या दो तर्क पारित कर रही हैं:

  int main () {/ / ठीक: दोनों दो पैरामीटर कंस्ट्रक्टर अकाउंट एक्ट ("एतान स्टर्न") को आमंत्रित करते हैं;   

जब यह एकल तर्क के साथ घोषित नहीं किया गया है, तो यह 2-पैरामीटर निर्माता कैसे पूछता है ??

  खाता * संधि = नया खाता ("माइकल लीबरमैन ", 5000);   

और उपरोक्त पंक्ति कंसट्रक्टर को डिफ़ॉल्ट तर्कों के साथ कैसे कॉल करता है

  यदि (strcmp (acct.name), संधि- & gt; नाम () )) // ...}   

यह पुस्तक अपूर्ण कोडों के साथ बहुत स्पष्ट नहीं है। कन्स्ट्रक्टरों पर एक अच्छी स्पष्टीकरण की आवश्यकता है कृपया स्पष्टीकरण दें।

यह कंपासर्स के बारे में नहीं है, यह डिफ़ॉल्ट तर्क के बारे में है। < पूर्व> शून्य एफ (int x, int y = 5) {// blah}

जब आप इसे कम तर्क प्रदान करते हैं, तो यह डिफ़ॉल्ट तर्कों के मानों का उपयोग करता है। उदा।

  f (3); // एफ के बराबर (3, 5);   

यदि फ़ंक्शन मापदंडों में से कोई एक डिफ़ॉल्ट मान है, तो सभी क्रमिक पैरामीटर में भी लोग होंगे।

  शून्य f (int x, int y = 3, इंट ज़ेड = 4) {// blah} f (0); // f (0, 3, 4) f (1, 2); // f (1, 2, 4) एफ (10, 30, 20); // स्पष्ट रूप से निर्दिष्ट तर्क   

एचएच

Comments