मैं निम्नलिखित कोड लिखा है:सी ++ लौटने एक वस्तु की नकल
class MyObjectHolder {
public:
std::vector<int> getMyObject() const {
return myObject;
}
private:
std::vector<int> myObject;
};
मेरा कार्यक्रम के कुछ बिंदु पर मैं getMyObject
विधि का उपयोग करें और पुनः प्राप्त वस्तु पर केवल const
विधियों का उपयोग करते:
const std::vector<int> myObject = myObjectHolder.getMyObject();
myObject.size();
int a = myObject.front();
अब, क्या यह संभव है कि संकलक इस कोड को अनुकूलित करे ताकि की कोई प्रतियां कर रहे हैं?
संकलक निर्धारित करता है कि कि मैं केवल पुनः प्राप्त वस्तु पर
const
तरीकों का उपयोग कर रहा हूँ यह किसी भी तरह संभव है (और मान लेते हैं कोईmutable
बकवास इसके पीछे क्या हो रहा है है) और यह किसी भी प्रतियां बनाने नहीं होता ऑब्जेक्ट्स के पर के सदस्यconst
संचालन करते हैं?यदि हाँ, यह संभव है कि अगर मैं स्पष्ट रूप से
const
रूपconst std::vector<int> myObject
घोषित नहीं किया हो सकता है?यदि नहीं, तो ऐसा करने के कारण क्या हैं? किस मामले में यह अनुकूलन लागू करना/कटौती करना मुश्किल होगा कि यह संभव है और यहां सही है/आदि ...?
[आरवीओ] (http://en.wikipedia.org/wiki/Return_value_optimization) में अस्थायी वस्तुएं शामिल हैं। जब तक मुझे कुछ याद नहीं आ रहा है, वहां कोई अस्थायी वस्तुएं नहीं हैं इसलिए कोई आरवीओ नहीं है। – hmjd
@hmjd दाएं। मुझे 'आरवीओ' के बारे में बात नहीं करनी चाहिए, बस 'निजी' चर का उपयोग करने के साथ संभावित अनुकूलन के बारे में। धन्यवाद। –