चूंकि C++11
विशेष मामलों को पावर फ़ंक्शंस (और अन्य) के सूट में जोड़ा गया था। C++11 [c.math] /11
राज्यों, सभी float/double/long double
अधिभार (मेरा जोर, और पैराफ्रेस्ड) को सूचीबद्ध करने के बाद :
इसके अलावा, यह सुनिश्चित करने के लिए पर्याप्त अतिरिक्त अधिभार होगा कि, यदि किसी double
पैरामीटर के अनुरूप कोई तर्क टाइप double
या पूर्णांक प्रकार है, तो double
पैरामीटर के अनुरूप सभी तर्क प्रभावी रूप से डाले जाते हैं double
।
इसलिए, मूल रूप से, पूर्णांक मापदंडों को ऑपरेशन करने के लिए डबल्स में अपग्रेड किया जाएगा।
इससे पहले C++11
(जो कि आपका प्रश्न पूछा गया था), कोई पूर्णांक अधिभार मौजूद नहीं था।
चूँकि मैं न तो उनके निर्माण के दिनों में (न ही मैं पुराना हूँ ) C
न ही रचनाकारों के साथ घनिष्ठता से जुड़ा था , न ही ANSI / ISO समितियों का हिस्सा, जिन्होंने मानकों का निर्माण किया, यह आवश्यक रूप से मेरी ओर से राय है। मुझे लगता है कि यह सूचित राय है लेकिन, जैसा कि मेरी पत्नी आपको बताएगी (बार-बार और बहुत प्रोत्साहन के बिना आवश्यक), मैं पहले भी गलत रहा हूं :-)C++
आपूर्ति, इसके लायक क्या है, इस प्रकार है।
मुझे संदेह है कि मूल पूर्व-एएनएसआई के C
कारण यह सुविधा नहीं थी क्योंकि यह पूरी तरह से अनावश्यक था। सबसे पहले, पूर्णांक शक्तियों (डबल्स के साथ और फिर बस एक पूर्णांक में वापस परिवर्तित करने, पूर्णांक ओवरफ़्लो करने और परिवर्तित करने से पहले अंडरफ़्लो की जाँच) करने का एक अच्छा तरीका था।
दूसरा, आपको एक और बात याद रखनी है कि मूल इरादा C
एक सिस्टम प्रोग्रामिंग लैंग्वेज के रूप में था , और यह संदिग्ध है कि फ्लोटिंग पॉइंट उस क्षेत्र में बिल्कुल भी वांछनीय है या नहीं।
चूंकि इसके प्रारंभिक उपयोग के मामलों में से एक को यूनिक्स को कोड करना था, इसलिए फ्लोटिंग पॉइंट बेकार हो जाएगा। BCPL, जिस पर C आधारित था, का भी शक्तियों के लिए कोई उपयोग नहीं था (इसमें मेमोरी से फ्लोटिंग पॉइंट बिल्कुल नहीं था)।
एक तरफ के रूप में, एक अभिन्न शक्ति ऑपरेटर संभवतः एक पुस्तकालय कॉल के बजाय एक द्विआधारी ऑपरेटर होगा। आप लाइब्रेरी के बजाय भाषा के भाग के x = add (y, z)
साथ दो पूर्णांक नहीं जोड़ते हैं ।x = y + z
तीसरा, चूंकि अभिन्न शक्ति का कार्यान्वयन अपेक्षाकृत तुच्छ है, इसलिए यह लगभग निश्चित है कि भाषा के डेवलपर्स बेहतर समय प्रदान करने के लिए अपने समय का बेहतर उपयोग करेंगे (अवसर लागत पर टिप्पणी नीचे देखें)।
यह भी मूल के लिए प्रासंगिक है C++
। चूंकि मूल कार्यान्वयन प्रभावी रूप से सिर्फ एक अनुवादक था जो C
कोड का उत्पादन करता था , इसने कई विशेषताओं को आगे बढ़ाया C
। इसका मूल आशय C-with-classes था, C-with-classes-plus-a-little-bit-of-extra-math-stuff।
जैसा कि पहले कभी मानकों में क्यों नहीं जोड़ा गया था C++11
, आपको याद रखना होगा कि मानकों-सेटिंग निकायों के पास विशिष्ट दिशानिर्देशों का पालन करना है। उदाहरण के लिए, एएनएसआई C
को विशेष रूप से मौजूदा अभ्यास को संहिताबद्ध करने का काम सौंपा गया था, न कि एक नई भाषा बनाने के लिए। अन्यथा, वे पागल हो सकते थे और हमें आडा दिया :-)
उस मानक के बाद के पुनरावृत्तियों में भी विशिष्ट दिशा-निर्देश हैं और औचित्य दस्तावेजों में पाया जा सकता है (तर्क के रूप में क्यों समिति ने कुछ निर्णय लिए, न कि भाषा के लिए औचित्य)।
उदाहरण के लिए C99
औचित्य दस्तावेज विशेष रूप से C89
मार्गदर्शक सिद्धांतों में से दो को आगे बढ़ाता है जो कि सीमा में जोड़े जा सकते हैं:
- भाषा को छोटा और सरल रखें।
- ऑपरेशन करने के लिए केवल एक ही तरीका प्रदान करें।
व्यक्तिगत कामकाजी समूहों के लिए दिशानिर्देश (जरूरी नहीं कि वे विशिष्ट हों ) निर्धारित किए जाएं और इसलिए C++
समितियों (और अन्य सभी आईएसओ समूहों) को भी सीमित करें ।
इसके अलावा, मानकों की स्थापना करने वाले निकायों को एहसास होता है कि उनके द्वारा किए गए प्रत्येक निर्णय के लिए एक अवसर लागत (एक आर्थिक शब्द का अर्थ है कि आपको क्या निर्णय लेना है)। उदाहरण के लिए, लगभग $ छह महीने के लिए उस $ 10,000 यूबर-गेमिंग मशीन को खरीदने का अवसर लागत सौहार्दपूर्ण संबंध (या शायद सभी संबंध) है।
एरिक गुनरसन ने अपने -100 अंकों के स्पष्टीकरण के साथ यह अच्छी तरह से समझाया है कि क्यों चीजें हमेशा Microsoft उत्पादों में नहीं जोड़ी जाती हैं- मूल रूप से एक सुविधा छेद में 100 अंक शुरू करती है, इसलिए इसे विचार करने के लिए काफी मूल्य जोड़ना पड़ता है।
दूसरे शब्दों में, क्या आपके पास एक अभिन्न पावर ऑपरेटर होगा (जो, ईमानदारी से, कोई भी आधा-सभ्य कोडर दस मिनट में कोड़ा कर सकता है) या मल्टी-थ्रेडिंग को मानक में जोड़ा जा सकता है? अपने आप के लिए, मैं बाद वाले को पसंद करूंगा और यूनिक्स और विंडोज के तहत अलग-अलग कार्यान्वयनों के बारे में नहीं सोचना चाहिए।
मैं मानक पुस्तकालय (हैश, बीट्रीस, लाल-काले पेड़, शब्दकोश, मनमाना नक्शे और इसके आगे) के हजारों और हजारों संग्रह भी देखना चाहता हूं, लेकिन साथ ही साथ, राज्यों में भी:
एक मानक कार्यान्वयनकर्ता और प्रोग्रामर के बीच एक संधि है।
और मानक निकायों पर कार्यान्वयनकर्ताओं की संख्या प्रोग्रामर की संख्या को दूर करती है (या कम से कम उन प्रोग्रामर्स को जो अवसर लागत को नहीं समझते हैं)। यदि वह सब कुछ जोड़ा गया था, तो अगला मानक C++
होगा C++215x
और संभवतः कंपाइलर डेवलपर्स द्वारा तीन सौ साल बाद पूरी तरह से लागू किया जाएगा।
वैसे भी, इस मामले पर मेरे (बल्कि बड़ा) विचार हैं। यदि गुणवत्ता के बजाय केवल वोटों को आधार पर सौंप दिया गया, तो मैं जल्द ही बाकी सभी को पानी से बाहर निकाल दूंगा। सुनने के लिए धन्यवाद :-)