मैं डेटा संरचनाओं (सूची, ढेर, कतार) का अध्ययन कर रहा हूं, और कोड का यह हिस्सा मुझे भ्रमित कर रहा है।फ़ंक्शन पैरामीटर के भीतर असाइनमेंट ऑपरेटर सी ++
ListNode(const Object& theElement = Object(), ListNode * node = NULL);
template<class Object>
ListNode<Object>::ListNode(const Object& theElement, ListNode<Object> * node) {
element = theElement;
next = node;
}
- क्यों समारोह मापदंडों के भीतर काम ऑपरेटरों देखते हैं?
Object()
कॉल क्या करता है?
मैं वोट करने के लिए परीक्षा रहा हूँ अगर आपको लगता है कि डिफ़ॉल्ट पैरामीटर अधिक "" बुराई सी ++ सुविधाओं में से एक है का उल्लेख होगा। वे रचनाकारों या डिफ़ॉल्ट रचनाकारों को बदलने में निर्दोष रचनाकारों को बदल देते हैं। वे 'बाध्य' कार्यों को मुश्किल बनाते हैं। एक बाधा है जब केवल कुछ पैरामीटर निर्दिष्ट किए जाने चाहिए और अन्य डिफ़ॉल्ट रूप से छोड़े जाते हैं। – pmr
मुझे न तो। एक साइज सबके लिए फ़िट नहीं होता है। कभी-कभी वे बहुत उपयोगी होते हैं। – Spook
@ अपराह्न, मैं आपके साथ जरूरी नहीं हूं कि वे "बुरा" हैं। वे कई रचनाकारों को लिखकर खुद को दोहराने से बचने के लिए एक उपयोगी तरीका हैं, जब आप केवल एक डिफ़ॉल्ट पैरामीटर के साथ एक कन्स्ट्रक्टर प्रदान कर सकते हैं। मानक लाइब्रेरी कार्यान्वयन अक्सर इसका लाभ उठाते हैं, उदा। 'वेक्टर (const allocator_type और a = allocator_type());' –