लगभग हर शब्द जिसे आप एक भाषा के लिए एक खोजशब्द के रूप में जोड़ने के बारे में सोच सकते हैं, लगभग निश्चित रूप से एक चर नाम या काम करने वाले कोड के कुछ अन्य भाग के रूप में उपयोग किया गया है। यदि आपने उस शब्द को कीवर्ड बना दिया है तो यह कोड टूट जाएगा।
अविश्वसनीय रूप से भाग्यशाली बात autoयह है कि यह पहले से ही एक कीवर्ड था, इसलिए लोगों के पास उस नाम के साथ चर नहीं थे, लेकिन किसी ने इसका इस्तेमाल नहीं किया, क्योंकि यह डिफ़ॉल्ट था। क्यों टाइप करें:
auto int i=0;
कब
int i=0;
वास्तव में एक ही बात का मतलब है?
मुझे लगता है कि ग्रह पर कहीं कोड की कुछ छोटी मात्रा थी जो पुराने तरीके से 'ऑटो' का इस्तेमाल करती थी। लेकिन 'ऑटो' को हटाकर इसे ठीक किया जा सकता था और यह फिर से काम कर रहा होगा। इसलिए यह कीवर्ड को पुन: पेश करने के लिए एक बहुत स्पष्ट विकल्प था।
मुझे लगता है कि यह एक स्पष्ट अर्थ है। यदि आपने वेरिएंट के साथ काम किया है और इस तरह, जब आप देखते हैं varतो आप सोच सकते हैं कि घोषणा किसी तरह से कम दृढ़ता से टाइप की गई है यदि आपने कीबोर्ड पर सभी कुंजी को स्वयं टाइप किया है ताकि वेरिएबल के प्रकार को निर्दिष्ट किया जा सके। मेरे लिए, autoयह स्पष्ट करता है कि आप कंपाइलर को स्वचालित रूप से टाइप करने के लिए कह रहे हैं, जो कि उतना ही मजबूत है जितना कि आपने इसे स्वयं निर्दिष्ट किया है। तो यह वास्तव में एक बहुत ही भाग्यशाली ब्रेक था जिसने समिति को एक अच्छा नाम उपलब्ध कराया।
(छोटा) ब्रेकिंग को स्पष्ट करने के लिए:
अगर आप के पास था
auto int i=0;
और C ++ 11 संकलक के साथ संकलन करने की कोशिश की, अब आपको एक त्रुटि मिलेगी जैसे
C3530 त्रुटि: 'ऑटो' को किसी अन्य प्रकार-विशेष के साथ जोड़ा नहीं जा सकता है
यह तुच्छ है, आप बस या तो ऑटो को हटा दें और फिर से खोलें।
हालांकि एक बड़ी समस्या है। अगर आप के पास था
auto i = 4.3;
C और वास्तव में पुराना C ++ iएक बना देगा int(जैसा कि यदि आप छोड़ देते हैं auto- डिफ़ॉल्ट घोषणा थी int)। यदि आप इस कोड को संकलित किए बिना वास्तव में लंबे समय से चले गए हैं, या पुराने संकलक का उपयोग कर रहे हैं, तो आप कम से कम सिद्धांत में इस कोड में से कुछ हो सकते हैं। C ++ 11 इसे बनाता है doubleक्योंकि यह 4.3 है। (या शायद ए float, मैं अभी भी बॉक्सिंग डे मोड में हूं, लेकिन बिंदु एक नहीं है int।) यह आपके ऐप में सूक्ष्म कीड़े को पेश कर सकता है। और संकलक से किसी भी चेतावनी या त्रुटियों के बिना। इस नाव में लोगों को यह autoसुनिश्चित करने के लिए ग्लोबली सर्च करना चाहिए कि वे C ++ 11 कंपाइलर में जाने से पहले इसका पुराना इस्तेमाल नहीं कर रहे थे। सौभाग्य से, ऐसा कोड अत्यंत दुर्लभ है।
autoपीछे की अनुकूलता को तोड़ सकता है, लेकिन, इस बात पर निर्भर करता है कि पूर्व -11 कोड मेंvarकितनी बारautoकीवर्ड का उपयोग किया गया है , की तुलना में एक चर नाम के रूप में कितनी बार उपयोग किया जाता है, समिति ने शायद यह माना है कि यह एक नया परिचय देने की तुलना में कम नाटकीय रूप से संगतता को तोड़ता है कीवर्ड होगा।