Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में विशेषताएँ

यदि उनका कोड विभिन्न कंपाइलरों पर चलता है, तो चीजों को मानकीकृत करने के लिए C++ में विशेषताएँ आधुनिक तरीके हैं। विशेषताओं का उपयोग कुछ अतिरिक्त जानकारी प्रदान करने के लिए किया जाता है जिसका उपयोग शर्तों (बाधाओं), अनुकूलन को लागू करने और यदि आवश्यक हो तो विशिष्ट कोड जनरेशन करने के लिए किया जाता है।

ये कंपाइलर्स के लिए कुछ लागू करने के लिए एक सूचना मैनुअल की तरह हैं जो कोड के प्रदर्शन में सुधार करेगा। विशेषताएं पहली बार C++ 11 में देखी गईं और तब से प्रोग्रामिंग भाषा के महत्वपूर्ण भाग हैं, साथ ही प्रत्येक संस्करण के साथ उन्हें अधिक शक्तिशाली और बेहतर बनाने के लिए कुछ संशोधन लगातार किए जाते हैं।

आइए देखें कि हम C++ में विशेषताओं को कैसे परिभाषित कर सकते हैं

C++ के विभिन्न संस्करणों के लिए, विशेषताओं को परिभाषित करने के लिए सिंटैक्स अलग है।

c++ 11 -

. में एट्रिब्यूट बनाने के लिए सिंटैक्स
[[attribute-list]]

c++ 17 -

. में एट्रिब्यूट बनाने के लिए सिंटैक्स
[[using attribute-namespace : attribute_list]]

c++ 20 में विशेषता बनाने का सिंटैक्स (जल्द ही प्रकाशित किया जाएगा) -

[[contract-attriubute-token contract-level-identifier : expression]]

आप चर, कार्यों, कक्षाओं के साथ कई विशेषताओं का उपयोग कर सकते हैं।

अब, चूंकि हम जानते हैं कि गुण क्या हैं, वे कैसे कार्य कर रहे हैं, और उन्हें कैसे परिभाषित किया गया है। आइए विभिन्न मानक विशेषताओं को देखें जो c++ में उपलब्ध हैं।

C++ 11 में पेश की गई विशेषताएं

नोरिटर्न - इस विशेषता का उपयोग संकलक को यह बताने के लिए किया जाता है कि फ़ंक्शन कोई मान नहीं लौटाता है।

सिंटैक्स

[[noreturn]]

उदाहरण

[[noreturn]] void f();

यह फ़ंक्शन कोई मान नहीं लौटाएगा, यहां तक ​​कि शून्य भी नहीं।

noreturn विशेषता, जब c++ में उपयोग की जाती है, तो कुछ गलत होने की स्थिति में संकलक को एक चेतावनी वापस करने में सक्षम बनाता है और प्रवाह कॉलिंग कोड पर वापस नहीं जाता है, जैसे कि अनंत लूप या किसी त्रुटि के मामले में।

वहन_निर्भरता - इसका उपयोग उन सभी निर्भरताओं को परिभाषित करने के लिए किया जाता है जो रिलीज-उपभोग में हैं और संकलक को अनावश्यक मेमोरी खपत निर्देशों के माध्यम से अनुकूलित करने की अनुमति देता है।

सिंटैक्स

[[carries_dependency]]

यह मुख्य रूप से निर्भरता घोषित करने के लिए कार्यों या मापदंडों की घोषणा के साथ प्रयोग किया जाता है।

बहिष्कृत - इसका उपयोग कोड में एक पदावनत इकाई को परिभाषित करने के लिए किया जाता है। इस बहिष्कृत इकाई के उपयोग की अनुमति है लेकिन इसका उपयोग करने की अनुशंसा नहीं की जाती है।

सिंटैक्स

[[deprecated]]
[[deprecated (reason)]]

कारण एक स्ट्रिंग है जो कारण बताता है कि मूल्यह्रास क्यों किया जाता है और बहिष्कृत इकाई के लिए एक विकल्प भी प्रदान करता है।

जिन संस्थाओं को बहिष्कृत किया जा सकता है वे हैं वर्ग, संरचना, संघ, टाइपिफ़-नाम, स्थिर सदस्य, कार्य, नाम स्थान, गणना।

नुकसान - इसका उपयोग कंपाइलर को यह इंगित करने के लिए किया जाता है कि अगले मामले में फॉलथ्रू जानबूझकर है, इसके कारण कंपाइलर फॉलथ्रू को चेतावनी नहीं देता है।

सिंटैक्स

[[fallthrough]]

फ़ॉलथ्रू का उपयोग केवल स्विच के साथ किया जा सकता है क्योंकि इसके लिए अगला मामला परिभाषित किया गया है।

नोडिस्कर्ड - इसका उपयोग उस फ़ंक्शन के लिए किया जाता है जो एक एन्यूमरेशन लौटाएगा जिसे कास्ट से शून्य कॉल के बजाय छोड़े गए मूल्य अभिव्यक्ति से बुलाया जाएगा। कंपाइलर इसके लिए एक चेतावनी भी जारी करेगा।

सिंटैक्स

[[nodiscard]]
[[nodiscard (reason)]] (added in C++ 20)

कारण एक स्ट्रिंग है जिसका उपयोग परिणाम को न छोड़ने के लिए एक कारण प्रदान करने के लिए किया जाता है और इसे c++ 20 में शामिल किया जाएगा।

शायद_अप्रयुक्त - इसका उपयोग संकलक को अप्रयुक्त इकाइयों के मामले में प्रदर्शित होने वाली चेतावनी को दबाने या समाप्त करने के लिए कहने के लिए किया जाता है।

सिंटैक्स

[[maybe_unused]]

इकाइयाँ जिन्हें may_unused घोषित किया जा सकता है, वे हैं वर्ग, संरचना, संघ, टाइपिफ़-नाम, स्थिर सदस्य, कार्य, चर, गणना।

संभावित, असंभव - इनका उपयोग मौसम को परिभाषित करने के लिए किया जाता है, वैकल्पिक पथ कमोबेश वर्तमान निष्पादन की संभावना है।

सिंटैक्स

[[likely]]
[[unlikely]]

ये आम तौर पर उन संस्थाओं पर लागू होते हैं जो लेबल और स्टेटमेंट जैसे प्रोग्राम के प्रवाह को बदल देते हैं।

no_unique_address - इसका उपयोग डेटा-सदस्य को परिभाषित करने के लिए किया जाता है, जिसके लिए एक विशिष्ट पते की आवश्यकता नहीं होती है। यह आम तौर पर गैर-स्थिर डेटा सदस्यों के मामले में उपयोग किया जाता है, उनकी स्मृति आवंटन को परिभाषित करना आवश्यक नहीं है।

सिंटैक्स

[[no_unique_address]]

यह तब उपयोगी होता है जब संकलक को एक सामान्य और एक no_unique_address चर के बीच स्मृति स्थान निर्दिष्ट करने की आवश्यकता होती है, संकलक पहले वाले को प्राथमिकता देगा।

Optimize_for_synchronized - इसका उपयोग यह परिभाषित करने के लिए किया जाता है कि दिए गए फ़ंक्शन की परिभाषा को सिंक्रनाइज़ किए गए कथन से आमंत्रण के लिए अनुकूलित किया जाना है।

सिंटैक्स

[[optimize_for_synchronized]]

ऑप्टिमाइज़_for_synchronized के रूप में परिभाषित फ़ंक्शन सिंक्रनाइज़ किए गए ब्लॉक को क्रमबद्ध करने से बच जाएगा।

उम्मीद करता है - यह उन शर्तों को निर्दिष्ट करता है जो किसी फ़ंक्शन के तर्कों के लिए फ़ंक्शन को निष्पादित करने के लिए आवश्यक हैं।

सिंटैक्स

[[expects : condition]]

शर्त एक शर्त को परिभाषित करती है जिसे निष्पादित किए जाने वाले फ़ंक्शन के लिए पूरा किया जाना है।

ये सभी विशेषताएँ थीं जो C++ में C++ 11 से C++ 20 तक परिभाषित हैं। अब, आइए देखें कि प्रोग्रामिंग में इन विशेषताओं का उपयोग क्यों किया जाता है अर्थात कौन-सी प्रस्तावित विशेषताएँ हल करती हैं?

  • कोड में बाधाएं जोड़ने के लिए - कई मामलों में, विशेषताएँ कोड में अर्थ जोड़ती हैं और इसे अधिक मान्य बनाती हैं और अतिरिक्त प्रयास को कम करती हैं।

  • संकलक को कुछ और अनुकूलन जानकारी प्रदान करें - कुछ विशेषताएँ जैसे फ़ॉलथ्रू, संभावना, हो सकता है_यूज्ड विशिष्ट अनुकूलन करने के लिए संकलक को जानकारी प्रदान करते हैं।

  • चेतावनी और त्रुटियों से बचना - कभी-कभी प्रोग्रामर का तर्क C++ के सख्त नियमों के खिलाफ जाता है। यह वह मामला है जहां कुछ विशेषताएं काम करती हैं और उपयोगकर्ताओं को होने वाली चेतावनी से बचने या दबाने में मदद करती हैं।


  1. Linux पर C++ का सबसे अच्छा IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। Linux पर C++ के लिए एक भी सर्वश्रेष्ठ IDE नही

  1. सी # में गुण क्या हैं?

    एक विशेषता एक घोषणात्मक टैग है जिसका उपयोग आपके प्रोग्राम में विभिन्न तत्वों जैसे कक्षाओं, विधियों, संरचनाओं, एन्यूमरेटर्स, असेंबली आदि के व्यवहार के बारे में रनटाइम को जानकारी देने के लिए किया जाता है। निम्नलिखित वाक्य रचना है। [attribute(positional_parameters, name_parameter = value, ...)] Eleme

  1. सी # में अप्रचलित गुण क्या हैं?

    एक विधि एक अप्रचलित विशेषता है, तो संकलक मुद्दों कोड में एक चेतावनी है, तो बाद यह संकलित किया गया है। जब एक नया तरीका एक कक्षा में किया जा रहा है और अगर आप अभी भी कक्षा में पुराना तरीका बनाए रखना चाहते हैं, आप इसे अप्रचलित के रूप में संदेश नई विधि प्रदर्शित करके, इस्तेमाल किया जाना चाहिए पुराना तर