"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > वैल्यू द्वारा किसी ऑब्जेक्ट को वापस करने से मूव कंस्ट्रक्टर कब ट्रिगर होता है?

वैल्यू द्वारा किसी ऑब्जेक्ट को वापस करने से मूव कंस्ट्रक्टर कब ट्रिगर होता है?

2024-11-16 को प्रकाशित
ब्राउज़ करें:699

When Does Returning an Object by Value Trigger a Move Constructor?

किसी फ़ंक्शन से किसी क्लास के ऑब्जेक्ट को वैल्यू के आधार पर लौटाना

उस मामले पर विचार करें जहां आप किसी फ़ंक्शन से किसी क्लास के ऑब्जेक्ट को वैल्यू के आधार पर लौटाते हैं कीमत। इस परिदृश्य में, लौटाई गई वस्तु को आम तौर पर एक अंतराल माना जाता है, जिसका अर्थ है कि इसकी स्मृति में एक नाम और एक पता है। हालाँकि, कुछ परिस्थितियों के परिणामस्वरूप लौटाई गई वस्तु को प्रतिद्वंद्विता, नाम या पते के बिना एक अस्थायी वस्तु के रूप में माना जा सकता है।

अंतर्निहित चाल नियम

C अंतर्निहित चाल नियम जो किसी वस्तु को मूल्य के आधार पर लौटाते समय लागू हो सकता है। यह नियम बताता है कि यदि निम्नलिखित शर्तें पूरी होती हैं:

  • लौटा हुआ एक्सप्रेशन एक xvalue है (एक अस्थायी ऑब्जेक्ट को दर्शाने वाला एक एक्सप्रेशन जो एक लैवल्यू नहीं है)।
  • का वर्ग लौटाए गए ऑब्जेक्ट में एक मूव कंस्ट्रक्टर है। कॉपी कंस्ट्रक्टर का. इस व्यवहार का उद्देश्य अनावश्यक नकल से बचकर प्रदर्शन को अनुकूलित करना है। const test& z) लागू किया गया है:
  • कक्षा परीक्षण { जनता: परीक्षण(int y) { printf("test(int y)\n"); } परीक्षण() { प्रिंटफ ("परीक्षण()\n"); } परीक्षण(स्थिरांक परीक्षण& z) { प्रिंटफ("परीक्षण(स्थिरांक परीक्षण&z)\n"); } }; कुछ_चीज़ का परीक्षण करें() { परीक्षण मैं; वापसी मैं; }

आउटपुट:

परीक्षण() test(const test&z)

उदाहरण 2

class test {
public:
    test(int y) { printf("test(int y)\n"); }
    test() { printf("test()\n"); }
    test(const test& z) { printf("test(const test&z)\n"); }
};
test Some_thing() {
    test i;
    return i;
}

class test { जनता: परीक्षण(int y) { printf("test(int y)\n"); } परीक्षण() { प्रिंटफ ("परीक्षण()\n"); } परीक्षण(परीक्षण&&एस) { प्रिंटफ("परीक्षण(परीक्षण&&एस)\n"); } }; कुछ_चीज़ का परीक्षण करें() { परीक्षण मैं; वापसी मैं; }

test()
test(const test&z)

परीक्षण() test(test&& s)

उदाहरण 3

class test {
public:
    test(int y) { printf("test(int y)\n"); }
    test() { printf("test()\n"); }
    test(test&& s) { printf("test(test&& s)\n"); }
};
test Some_thing() {
    test i;
    return i;
}

कक्षा परीक्षण { जनता: परीक्षण(परीक्षण&& z) = हटाएँ; परीक्षण(int y) { printf("test(int y)\n"); } परीक्षण() { प्रिंटफ ("परीक्षण()\n"); } परीक्षण(स्थिरांक परीक्षण& z) { प्रिंटफ("परीक्षण(स्थिरांक परीक्षण&z)\n"); } }; कुछ_चीज़ का परीक्षण करें() { परीक्षण मैं; वापसी मैं; ) कोड को अनुकूलित करने और संकलन त्रुटियों को रोकने के लिए इस व्यवहार को समझना महत्वपूर्ण है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3