2010-01-10 12 views
15

कक्षा ए के लिए, एक पूर्णांक रूपांतरण ऑपरेटर कुछ ऐसा दिखाई देगा;रूपांतरण ऑपरेटर कैसे मूल्य लौटाता है?

operator int() //Here we don't specify any return type 
{ 
    return intValue; 
} 

उपरोक्त फ़ंक्शन एक मान वापस करने में सक्षम कैसे होता है जब उसके वापसी मूल्य प्रकार निर्दिष्ट नहीं होते हैं? यह "कुछ भी" वापस नहीं दिखता है, लेकिन मुझे पता है कि यह void नहीं है।

रिटर्न प्रकार निर्दिष्ट नहीं होने पर यह सार्थक कैसे है?

+0

मुझे लगता है कि प्रकार के हस्ताक्षर के महत्व को बढ़ाने से आपकी सोच में बाधा बहुत अधिक है। प्रकार हस्ताक्षर * आमतौर पर * रूपांतरण कार्यों के मामले में * रिटर्न प्रकार - * को छोड़कर * कहता है, जहां रिटर्न प्रकार दिया जाता है जो फ़ंक्शन के "नाम" की तरह दिखता है। रिटर्न टाइप ओवरलोड का उल्लेख करने के लिए –

उत्तर

20

operator T() का रिटर्न प्रकार हमेशा T है। यह सी ++ का एक विशेष मामला है।

यह एक ही नाम केवल वापसी प्रकार से भिन्न (double foo() साथ जैसे int foo() संघर्ष) साथ नहीं रह सकते के साथ मानक समारोह प्रोटोटाइप वाक्य रचना T foo() क्योंकि 2 कार्यों का उपयोग नहीं करता है। यदि इस वाक्यविन्यास का उपयोग किया जाता है तो आप केवल 1 रूपांतरण ऑपरेटर ओवरलोड को परिभाषित कर सकते हैं, जो अवांछित है।

+0

+1 –

6

operator T() का वापसी मूल्य T एक प्रकार हमेशा T है।

3

रूपांतरण ऑपरेटर का नाम इसका प्रकार है। यदि यह मामला नहीं था, तो आप एक इंट रूपांतरण ऑपरेटर (उदाहरण के लिए) को परिभाषित कर सकते हैं जो वास्तव में एक डबल लौटाता है। विचार की कुछ समान रेखा रचनाकारों पर लागू होती है, जिनके पास रिटर्न प्रकार नहीं होता है।

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