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

C++ में कॉपी एलिजन और रिटर्न वैल्यू ऑप्टिमाइजेशन क्या हैं?

कॉपी एलीशन को कॉपी ओमिशन के नाम से भी जाना जाता है। यह कंपाइलर ऑप्टिमाइजेशन तकनीक में से एक है। यह वस्तुओं की अनावश्यक नकल से बचा जाता है। लगभग कोई भी मौजूदा कंपाइलर इस CopyElision तकनीक का उपयोग करता है।

आइए देखें कि यह एक उदाहरण कोड की मदद से कैसे काम करता है।

उदाहरण कोड

#include <iostream>
using namespace std;
class MyClass {
   public:
   MyClass(const char* str = "\0") { //default constructor
      cout << "Constructor called" << endl;
   }
   MyClass(const MyClass &my_cls) { //copy constructor
      cout << "Copy constructor called" << endl;
   }
};
main() {
   MyClass ob = "copy class object";
}

आउटपुट

Constructor called

आइए अब चर्चा करते हैं कि कॉपी कंस्ट्रक्टर को क्यों नहीं बुलाया जाता है?

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

MyClass ob = "copy class object";

के रूप में काम करेगा।

MyClass ob = MyClass("copy class object");

C++ कंपाइलर इस तरह के ओवरहेड्स से बचते हैं।


  1. C++ में वेरिएबल और वेरिएबल के प्रकार क्या हैं?

    एक वेरिएबल हमें नामित स्टोरेज प्रदान करता है जिसे हमारे प्रोग्राम हेरफेर कर सकते हैं। C++ में प्रत्येक वेरिएबल का एक विशिष्ट प्रकार होता है, जो वेरिएबल की मेमोरी के आकार और लेआउट को निर्धारित करता है; उस स्मृति में संग्रहीत किए जा सकने वाले मानों की श्रेणी; और संचालन का सेट जिसे चर पर लागू किया जा स

  1. C++ में ++i और i++ में क्या अंतर है?

    ++ के प्रत्यय और उपसर्ग संस्करणों के बीच एक बड़ा अंतर है। उपसर्ग संस्करण (यानी, ++i) में, i का मान बढ़ा हुआ है, और व्यंजक का मान i का नया मान है। तो मूल रूप से यह पहले इंक्रीमेंट करता है और फिर एक्सप्रेशन को एक मान प्रदान करता है। पोस्टफ़िक्स संस्करण (यानी, i++) में, i का मान बढ़ा हुआ है, लेकिन व्य

  1. C++ में हस्ताक्षरित और अहस्ताक्षरित कीवर्ड क्या हैं?

    C++ में सभी प्रकार के नंबरों में या तो एक चिन्ह हो सकता है या नहीं। उदाहरण के लिए, आप केवल सकारात्मक पूर्णांक का प्रतिनिधित्व करने के लिए एक int घोषित कर सकते हैं। जब तक अन्यथा निर्दिष्ट न हो, सभी पूर्णांक डेटा प्रकार हस्ताक्षरित डेटा प्रकार होते हैं, अर्थात उनके पास ऐसे मान होते हैं जो सकारात्मक या