Stroustrup डी & ई 11.2.4 "overload
कीवर्ड" में कहा गया है कि overload
कीवर्ड जब "विलय" (या उपयोग करते हुए) दो पुस्तकालयों जो दोनों का उपयोग किया वही कार्य का नाम (नामस्थान * बिना) मुसीबतों का कारण बनता है। उदाहरण के लिए, सी ++ complex
हेडर से sqrt(complex)
बनाम सी 0 हेडर math.h
में sqrt
। अगर उनमें से एक के रूप में overloadable समारोह की घोषणा की, लेकिन अन्य नहीं किया है, आप इस तरह के एक आदेश में शीर्ष लेख शामिल किया था कि पहले यह हुआ ओवरलोडिंग सक्षम किया गया था:
// #include <complex>
overload sqrt;
complex sqrt(complex);
// #include <math.h>
double sqrt(double); // fine
// ---------------------------
// #include <math.h>
double sqrt(double);
// #include <complex>
overload sqrt; // ERROR: cannot allow overloading
// of an already declared function
complex sqrt(complex);
संभावित समाधानों में अनियंत्रित रहे हैं " सबसे सरल मामलों के अलावा सभी "।
(*) overload
कीवर्ड CFront 2.0 के साथ अप्रचलित किया गया था, 1989 में जारी किया गया नेमस्पेस 1993
कीवर्ड के मूल उद्देश्य में मानकीकरण प्रस्ताव में पेश किए गए दो आशंका से निपटने के लिए किया गया था:
- चिंताएं कि अनदेखी अस्पष्टताएं हो सकती हैं।
- चिंता है कि प्रोग्राम को ठीक से तब तक लिंक नहीं किया जा सकता जब तक प्रोग्रामर ने स्पष्ट रूप से घोषित नहीं किया कि कौन से फ़ंक्शंस ओवरलोड किए गए थे।
पूर्व डर काफी हद तक जमीनहीन साबित हुआ। वास्तविक उपयोग में पाए गए कुछ समस्याएं ऑर्डर-स्वतंत्र ओवरलोडिंग रिज़ॉल्यूशन नियमों से निपटाई जाती हैं। बाद के डर को सी अलग संकलन नियमों के साथ सामान्य समस्या में कोई आधार नहीं मिला, जिसका अधिभार अधिभार के साथ कुछ नहीं था।
कृपया डी/ई खरीदें/उधार/पढ़ें। यह वास्तव में एक महान किताब है, जिसमें कई प्रबुद्ध अंतर्दृष्टि हैं। – dyp
@PravasiMeet यह एक सी पुस्तकालय है। मुझे लगता है कि '#ifdef __cplusplus/* newline */overload sqrt जैसे कुछ जोड़ना;/* newline */# endif' को उन "अप्रबंधनीय" वर्कअराउंड्स में से एक माना जा सकता है, या असंभव है यदि बाहरी लाइब्रेरी हेडर बदला नहीं जा सकता – dyp
कृपया बताएं कि आप वास्तव में क्या लिखना चाहते हैं "बाहरी पुस्तकालय हेडर हो सकता है बदला नहीं जा सकता "? – Destructor