जैसा कि पहले से ही कहा गया है, नियम मानक में पूरी तरह वर्णित हैं। अंगूठे के मूल नियम के रूप में, संकलक अधिभार का चयन करेगा जिसके लिए कम से कम स्वचालित रूपांतरण की आवश्यकता होती है, यह चेतावनी के साथ कि यह 2 उपयोगकर्ता परिभाषित रूपांतरणों को कभी लागू नहीं करेगा।
इंटीजर प्रकार स्वचालित रूप से बहुत सारे होते हैं। तो यदि आपके पास int
और double
पर ओवरलोड किया गया है, तो संकलन int
फ़ंक्शन को एक पूर्णांक के साथ बुलाए जाने पर फ़ंक्शन करेगा। यदि आपके पास int
संस्करण नहीं था, तो संकलक double
एक का चयन करेगा। और विभिन्न पूर्णांक प्रकारों के बीच, कंपाइलर पूर्णांक स्थिरांक के लिए int
पसंद करता है, क्योंकि यह उनका प्रकार है। यदि आप short
और unsigned short
पर अधिभारित हैं, लेकिन 5
के निरंतर के साथ बुलाया गया है, तो संकलक शिकायत करेगा कि यह पता लगाने के लिए कि कौन से अधिभार का उपयोग नहीं किया जा सकता है।
स्कॉट मेयर्स की पुस्तक में वास्तव में सबसे अच्छा स्पष्टीकरण है जो मैंने कभी पढ़ा है।
क्या आपका मतलब ओवरराइड करना है? – MGZero
नियम कई हैं ... और जटिल। यह सब सी ++ मानक –
@MGZero के अनुभाग ** 3.4 ** में शामिल है - नहीं ... – Belgi