सी ++ 03 में अनावश्यक प्रतियों की समस्या थी जो स्पष्ट रूप से हो सकती थीं। इस उद्देश्य के लिए, सी ++ 11 ने rvalue references
और move semantics
पेश किया। अब मेरा सवाल यह है कि, क्या यह अनावश्यक प्रतिलिपि समस्या सी # और जावा जैसी भाषाओं में भी मौजूद है या क्या यह केवल सी ++ समस्या थी? दूसरे शब्दों में, rvalue references
सी ++ 11 को सी # या जावा की तुलना में और भी अधिक कुशल बनाता है?सी ++ रावल्यू संदर्भ और सैमांतिक्स
जहां तक सी # संबंधित (इसमें ऑपरेटर ओवरलोडिंग की अनुमति है), मान लें कि हमारे पास गणितीय वेक्टर क्लास है, और हम इसका उपयोग इस तरह करते हैं।
vector_a = vector_b + vector_c;
संकलक निश्चित रूप से कुछ अस्थायी वस्तु को vector_b + vector_c
बदल सकते हैं (यह vector_tmp
फोन की सुविधा देता है)।
अब मुझे नहीं लगता कि सी # vector_tmp
के रूप में इस तरह के एक अस्थायी rvalue या vector_b
के रूप में एक एक lvalue इस तरह के बीच अंतर कर सकते हैं, तो हम, वैसे भी vector_a
डेटा कॉपी करना होगा जो आसानी से rvalue references
और move semantics
का उपयोग करके बचा जा सकता है सी ++ 11 में।
कि असंबंधित –