मैं सबसे ऑपरेटर ओवरलोडिंग को समझते हैं, सदस्य पहुँच ऑपरेटरों के अपवाद के साथ ->
, .*
, ->*
आदि
विशेष रूप से, इन ऑपरेटर कार्यों को क्या पारित किया जाता है, और क्या लौटाया जाना चाहिए?
ऑपरेटर कैसे कार्य करता है (जैसे operator->(...)
) जानता है कि किस सदस्य को संदर्भित किया जा रहा है? क्या यह पता चल सकता है? क्या यह जानना भी जरूरी है?
अंत में, क्या कोई आधार विचार है जिसे ध्यान में रखा जाना चाहिए? उदाहरण के लिए, किसी चीज को ओवरलोड करते समय operator[]
, आम तौर पर आपको एक कास्ट और नॉन-कास्ट संस्करण दोनों की आवश्यकता होगी। क्या सदस्य अभिगम संचालकों को कास्ट और नॉन-कास्ट संस्करण की आवश्यकता होती है?
const
और गैर- const
संस्करणों की आवश्यकताoperator->
नहीं है , लेकिन दोनों प्रदान करना उपयोगी हो सकता है।
->*
और .*
। वास्तव में, यह भी उन्हें उल्लेख नहीं करता है! मुझे लगता है कि वे अक्सर पूछे जाने वाले प्रश्न के लिए दुर्लभ होते हैं, लेकिन मैं इस प्रश्न को अक्सर पूछे जाने वाले प्रश्न से जोड़ता हूं। कृपया इसे अकसर किये गए सवाल के जवाब के रूप में बंद न करें!