खोज…


वाक्य - विन्यास

  • function_name ([ function_args ]) [ function_attributes ] [ function_qualifiers ] -> अनुगामी-वापसी-प्रकार [ आवश्यकताएँ_clause ]

टिप्पणियों

उपरोक्त सिंटैक्स एक अनुगामी प्रकार का उपयोग करके एक पूर्ण फ़ंक्शन घोषणा दिखाता है, जहां स्क्वायर ब्रैकेट फ़ंक्शन डिक्लेरेशन के एक वैकल्पिक भाग को इंगित करते हैं (जैसे तर्क सूची यदि कोई नहीं- arg फ़ंक्शन)।

इसके अतिरिक्त, अनुगामी रिटर्न प्रकार का सिंटैक्स एक अनुगामी रिटर्न प्रकार के अंदर एक वर्ग, संघ, या एनम प्रकार को परिभाषित करने पर प्रतिबंध लगाता है (ध्यान दें कि यह एक अग्रणी रिटर्न प्रकार में भी अनुमति नहीं है)। इसके अलावा, प्रकार -> बाद उसी तरह से लिखे जा सकते हैं -> जैसे वे कहीं और होंगे।

एक नेस्टेड प्रकार नाम अर्हता प्राप्त करने से बचें

class ClassWithAReallyLongName {
  public:
    class Iterator { /* ... */ };
    Iterator end();
};

सदस्य end को एक पीछे लौटने के प्रकार के साथ परिभाषित करना:

auto ClassWithAReallyLongName::end() -> Iterator { return Iterator(); }

सदस्य end को पीछे छोड़ते हुए पीछे चल रहा है।

ClassWithAReallyLongName::Iterator ClassWithAReallyLongName::end() { return Iterator(); }

अनुगामी वापसी प्रकार को वर्ग के दायरे में देखा जाता है, जबकि एक प्रमुख वापसी प्रकार को संलग्न नाम स्थान के दायरे में देखा जाता है और इसलिए इसे "अनावश्यक" योग्यता की आवश्यकता हो सकती है।

लम्बोदर भाव

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

struct Base {};
struct Derived1 : Base {};
struct Derived2 : Base {};
auto lambda = [](bool b) -> Base* { if (b) return new Derived1; else return new Derived2; };
// ill-formed: auto lambda = Base* [](bool b) { ... };


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow