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

`std::move` को `std::move` क्यों कहा जाता है यदि यह वास्तव में कुछ भी स्थानांतरित नहीं करता है?

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

Why is `std::move` Called `std::move` if it Doesn't Actually Move Anything?

std::move का नाम std::move क्यों रखा गया है?

std::move फ़ंक्शन, अपने नाम के बावजूद, ऐसा नहीं करता है वास्तव में कुछ भी हिलाओ। यह केवल एक लैवल्यू (किसी वस्तु को संदर्भित करने वाली अभिव्यक्ति) को एक प्रतिद्वंद्विता (एक अस्थायी वस्तु का प्रतिनिधित्व करने वाली अभिव्यक्ति) में परिवर्तित करता है। यह रूपांतरण एक कास्ट के माध्यम से xvalue श्रेणी में किया जाता है, जो lvalues ​​​​और prvalues ​​​​से अलग है।

इस नामकरण विकल्प का कारण अवधारणा के इतिहास में वापस जाता है। मूल रूप से, मूव ऑपरेशन को मूल्यों को कॉपी किए बिना कुशलतापूर्वक स्वैप करने के एक तरीके के रूप में पेश किया गया था। इसके शुरुआती सिंटैक्स में static_cast का उपयोग करके अंतराल मूल्यों को प्रतिमूल्यों में बदलना शामिल था। पठनीयता में सुधार करने और इन कास्ट्स के इरादे को व्यक्त करने के लिए, मूव कीवर्ड को स्टेटिक_कास्ट के लिए सिंटैक्टिक शुगर के रूप में पेश किया गया था।

उस समय के संदर्भ में, "मूव" शब्द का उपयोग इन कास्ट्स के उद्देश्य को इंगित करने के लिए किया गया था। : चाल शब्दार्थ को सक्षम करने के लिए। परिणाम यह है कि कोड सटीक तकनीकी कार्रवाई (प्रतिद्वंद्विता पर कास्टिंग) नहीं बताता है, बल्कि वांछित परिणाम (ऑब्जेक्ट को स्थानांतरित करना) बताता है।

वर्षों से, अंतराल और प्रतिद्वंद्विता की अवधारणा विकसित हुई है आज हमारे पास मूल्य श्रेणियां हैं, जिनमें xvalues ​​उन वस्तुओं का प्रतिनिधित्व करते हैं जिन्हें rvalues ​​​​पर डाला गया है। परिणामस्वरूप, मूव कीवर्ड को भ्रामक के रूप में देखा जा सकता है, क्योंकि यह केवल एक ऐसी कार्रवाई का संकेत देता है जो हुड के तहत हो भी सकती है और नहीं भी।

हालाँकि, पठनीयता को बनाए रखने के लिए मूव कीवर्ड का उपयोग करने का विकल्प बनाए रखा गया है और उस भ्रम से बचें जो कास्ट_टू_एक्सवैल्यू जैसे अपरिचित सिंटैक्स से उत्पन्न हो सकता है। std::move फ़ंक्शन एक मूल्यवान उपयोगिता बनी हुई है जो प्रोग्रामर को मूव सिमेंटिक्स को संक्षिप्त रूप से व्यक्त करने की अनुमति देती है, भले ही इसका नाम इसके संचालन के तकनीकी विवरण को पूरी तरह से कैप्चर न कर सके।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3