C++11 मानक C++ भाषा का एक संस्करण है। इसे 12 अगस्त 2011 को अंतर्राष्ट्रीय मानकीकरण संगठन (ISO) द्वारा अनुमोदित किया गया था, फिर C++14 और C++17 आए। C++11 कोर भाषा में कई नए परिवर्धन करता है।
C++11 में पेश किए गए कुछ नए परिवर्तन
- nullptr - पिछले nullptr में, शून्य मान हुआ करता था और इसमें इंटीग्रल मान में निहित रूपांतरण की कमी थी। नल पॉइंटर लिटरल को std::nullptr_t द्वारा दर्शाया जाता है। इस nullptr में कोई निहित रूपांतरण मौजूद नहीं है।
- लैम्ब्डा - लैम्ब्डा एक्सप्रेशन स्थानीय रूप से फ़ंक्शंस को परिभाषित करने की अनुमति देता है। अनाम फ़ंक्शंस को लैम्ब्डा के रूप में जाना जाता है। हम लैम्ब्डा एक्सप्रेशन का उपयोग जहां भी फ़ंक्शन ऑब्जेक्ट std::function अपेक्षित हो, वहां कर सकते हैं।
- स्मार्ट पॉइंटर्स - स्मार्ट पॉइंटर auto_ptr एकमात्र स्मार्ट पॉइंटर था और अब यह डिप्रिकेटेड है। C++11 में तीन अन्य स्मार्ट पॉइंटर्स जोड़े गए हैं: shared_ptr, unique_ptr और weak_ptr।
- auto - पिछले संस्करणों में, हमें ऑब्जेक्ट के प्रकार को निर्दिष्ट करना होता था लेकिन C++11 में, प्रकार निर्दिष्ट करने की आवश्यकता नहीं है जिसका अर्थ है कि आप उनके प्रकार को निर्दिष्ट किए बिना सीधे वेरिएबल्स घोषित कर सकते हैं।
- Override और Final - C++11 संस्करण ने दो नए विशेष पहचानकर्ता पेश किए हैं: override और final। Override इंगित करता है कि मेथड बेस क्लास में वर्चुअल मेथड का ओवरराइड माना जाता है। दूसरी ओर, final इंगित करता है कि डेराइव्ड क्लास को वर्चुअल मेथड को ओवरराइड नहीं करना चाहिए।
- डिलीटेड और डिफ़ॉल्टेड फ़ंक्शन्स - डिलीटेड फ़ंक्शंस ऑब्जेक्ट कॉपीिंग को रोकने के लिए उपयोगी हैं। कॉपीिंग को अक्षम करने के लिए, "=delete;" का उपयोग किया जाता है। डिफ़ॉल्ट फ़ंक्शन कंपाइलर को फ़ंक्शन के डिफ़ॉल्ट कार्यान्वयन को उत्पन्न करने का निर्देश देता है और "=default;" का उपयोग डिफ़ॉल्ट फ़ंक्शन्स के लिए किया जाता है।
- रेंज-बेस्ड फॉर लूप्स - C++11 ने कलेक्शन पर पुनरावृति के लिए रेंज-बेस्ड फॉर लूप्स पेश किए। अब, C-ऐरे की तरह पुनरावृति करना संभव है। यह पुनरावृति के 'foreach' प्रतिमान का समर्थन करता है।
- स्ट्रॉन्गली-टाइप्ड एनम्स - पारंपरिक एनम्स में, वे अपने एन्यूमरेटर्स को आसपास के स्कोप में एक्सपोर्ट करते थे। उन्हें "enum class" कीवर्ड के रूप में निर्दिष्ट किया जाता है। वे अपने एन्यूमरेटर्स को आसपास के स्कोप में एक्सपोर्ट नहीं करते।
- Static_assert और टाइप ट्रेट्स - यह कंपाइलेशन के समय एक असर्शन चेक करता है। यदि असर्शन सत्य है, तो यह कुछ भी प्रदर्शित नहीं करता अन्यथा यह एक एरर मैसेज प्रदर्शित करता है।
- नए C++ एल्गोरिदम - C++11 मानक लाइब्रेरी ने कुछ ऑपरेशन्स जैसे all_of(), any_of और none_of() के साथ नए एल्गोरिदम पेश किए।