मुझे पता है कि किसी ऑब्जेक्ट को किसी फ़ंक्शन के मान से गुजरते समय, चालक कन्स्ट्रक्टर को हमेशा एक कहा जाता है, यदि कोई है तो कोई प्रतिलिपि नहीं है। किसी वस्तु को मूल्य से वापस करने के बारे में क्या?क्या ऑब्जेक्ट लौटाए जाने पर स्थानांतरित होने की गारंटी है?
उदाहरण के लिए, हमारे पास कक्षा Foo
है जिसमें एक चालक कन्स्ट्रक्टर है, और हमारे पास एक ऐसा फ़ंक्शन है जो Foo
ऑब्जेक्ट देता है।
Foo g() {
Foo f;
// do something with f
return f;
}
अगर हमें लगता है कि कोई आरवीओ नहीं है, तो चालक कन्स्ट्रक्टर को कॉल करने की गारंटी है?
अद्यतन: मुझे लगता है कि मैंने अपना इरादा स्पष्ट रूप से नहीं दिखाया। मैं सिर्फ यह जानना चाहता हूं कि मैं सबसे खराब मामले में ऑब्जेक्ट कॉपी नहीं किया गया है। या तो आरवीओ या एनआरवीओ होता है, मैं खुश हूं। और मुझे यह भी कहना चाहिए कि चालक को स्थानांतरित करना और असाइनमेंट को स्थानांतरित नहीं किया गया है और ठीक से लागू किया गया है।
हां, स्वचालित संग्रहण में स्थानीय वस्तुओं को पूर्ण रूप से वापसी विवरणों में xvalues के रूप में माना जाता है। – ildjarn
@ildjarn: मुझे लगता है कि यह केवल तभी होगा जब आप इसे सीधे वापस कर दें। एसओ पर कहीं मुझे यह कहने से सही किया गया कि यह फ़ंक्शन में 'f' स्थानांतरित हो गया है:' वापसी करें_ कुछ (एफ); '। – GManNickG
@GManNickG: मेरे पास मानक या चेतावनी के लिए समय नहीं था, इसलिए उत्तर के बजाय एक टिप्पणी। मुझे लगता है कि आप सही हैं। : -] – ildjarn