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

कॉपी एलिजन (Copy Elision) और रिटर्न वैल्यू ऑप्टिमाइज़ेशन (Return Value Optimization) क्या हैं?


कॉपी एलिजन अधिकांश कंपाइलर्स द्वारा लागू एक ऑप्टिमाइज़ेशन है जो कुछ स्थितियों में अतिरिक्त (संभावित रूप से महंगी) कॉपी को रोकता है। इसलिए यदि आपके पास कुछ कोड है जो उपयोग न होने वाले ऑब्जेक्ट्स बना रहा है या जिनके साइड इफेक्ट्स नहीं हैं,

उदाहरण

struct MyStruct
{
    MyStruct() {}
    MyStruct(const MyStruct&)
    {
        std::cout << "Copied.\n";
    }
};

MyStruct f()
{
    return MyStruct();
}

int main()
{
    std::cout << "Main\n";
    MyStruct obj = f();
}

आउटपुट

आप कंपाइलर और सेटिंग्स के आधार पर निम्न में से कोई भी आउटपुट प्राप्त कर सकते हैं -

Main
Main
Copied
Copied
Main
Copied

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


  1. - C# में डेटा टाइप्स के प्रकार (Value, Reference, Pointer)

    परिचय C# में डेटा टाइप्स तीन मुख्य श्रेणियों में विभाजित हैं: 1. वैल्यू टाइप (Value Types) सीधे मान संग्रहीत करते हैं। System.ValueType से प्राप्त होते हैं। उदाहरण: int, char, float, double, bool, struct, enum। स्टैक पर आवंटित (आमतौर पर)। असाइनमेंट पर मान कॉपी होता है। 2. रेफरेंस टाइप (Referenc

  1. - C# में ref और out पैरामीटर्स के बीच अंतर

    Ref पैरामीटर एक रेफरेंस पैरामीटर किसी वेरिएबल के मेमोरी लोकेशन का रेफरेंस होता है। जब आप पैरामीटर्स को रेफरेंस द्वारा पास करते हैं, तो वैल्यू पैरामीटर्स के विपरीत, इन पैरामीटर्स के लिए नया स्टोरेज लोकेशन नहीं बनाया जाता। आप ref कीवर्ड का उपयोग करके रेफरेंस पैरामीटर्स डिक्लेयर कर सकते हैं। निम्नलिखित

  1. - C# में डेटा टाइप्स, वैल्यू टाइप्स और रेफरेंस टाइप्स क्या हैं?

    C# में डेटा टाइप्स दो प्रकार के होते हैं यानी वैल्यू टाइप, रेफरेंस टाइप और पॉइंटर टाइप।वैल्यू टाइप्सवैल्यू टाइप वेरिएबल्स को सीधे मान असाइन किया जा सकता है। ये System.ValueType क्लास से डेराइव्ड होते हैं।निम्न वैल्यू टाइप डेटा टाइप्स हैं:टाइपप्रतिनिधित्व करता हैरेंजडिफ़ॉल्ट मानboolबूलियन मानTrue या