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

C++ में कॉपी एलिजन (Copy Elision)


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

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

उदाहरण कोड

#include <iostream> using namespace std; class MyClass {    public:       MyClass(const char* str = "\0") {  //डिफ़ॉल्ट कंस्ट्रक्टर          cout << "Constructor called" << endl;       }       MyClass(const MyClass &my_cls) { //कॉपी कंस्ट्रक्टर          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++ Enum: एक पूर्ण गाइड

    C++ Enum का उपयोग कैसे करें: एक गाइड एक एन्यूमरेटेड टाइप एक उपयोगकर्ता-परिभाषित डेटा प्रकार है जिसे मानों की एक श्रृंखला से एक मान निर्दिष्ट किया जा सकता है। एनम का उपयोग अक्सर प्रोग्रामिंग में तब किया जाता है जब एक वेरिएबल को केवल मानों के एक विशिष्ट सेट में से एक मान स्टोर करने में सक्षम होना चाहि

  1. - C++ कोड: k से अधिक बिना कॉपी ऑपरेशन गिनें

    मान लीजिए हमारे पास n तत्वों की एक सरणी A है और एक अन्य संख्या k है। n कैंडी के ढेर हैं। iवें ढेर में A[i] संख्या में कैंडी हैं। हम दो इंडेक्स i और j (i != j) पर ऑपरेशन कर सकते हैं, फिर A[i] में A[i] संख्या की और कैंडी जोड़ें (A[i] कम नहीं होगा)। हम इस ऑपरेशन को कितनी भी बार कर सकते हैं, लेकिन दुर्भ

  1. C++ में रैंडम पॉइंटर के साथ लिस्ट कॉपी करें C++ में रैंडम पॉइंटर के साथ लिस्ट कॉपी करें

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरा ब्लॉक अगले फील्ड का पता रखता है। मान लीजिए हमारे पास एक लिंक्ड लिस्ट है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो लिस्ट में अन्य नोड्स की ओर इंगित करता है।