c++ - मूल्य या संदर्भ द्वारा std:: स्ट्रिंग पास करना




string move-semantics (2)

मेरा मानना ​​है कि सामान्य जवाब यह है कि यदि आपको अपने कार्य में इसकी प्रतिलिपि बनाने की आवश्यकता है तो इसे मूल्य से पारित किया जाना चाहिए। अन्यथा कॉन्स्ट संदर्भ द्वारा इसे पास करें।

यहां एक अच्छी चर्चा है: http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

संभावित डुप्लिकेट:
पासिंग std :: स्ट्रिंग और पैरामीटर के रूप में पास करने के दिन हैं?

यदि मैं semantics को समर्थित करता हूं तो क्या मुझे std::string को मान या संदर्भ (एक अन-इनलाइन फ़ंक्शन पर) पास करनी चाहिए? और छोटे स्ट्रिंग अनुकूलन (एसएसओ) का उपयोग करके कार्यान्वयन के बारे में क्या?


स्ट्रिंग के साथ आप क्या कर रहे हैं इसके आधार पर कई जवाब हैं।

1) एक आईडी के रूप में स्ट्रिंग का उपयोग (संशोधित नहीं किया जाएगा)। इसे कॉन्स्ट संदर्भ द्वारा पास करना शायद यहां सबसे अच्छा विचार है: (std::string const&)

2) स्ट्रिंग को संशोधित करना, लेकिन कॉलर को उस परिवर्तन को देखने की इच्छा नहीं है। इसे मूल्य में पास करना बेहतर है: (std::string)

3) स्ट्रिंग को संशोधित करना लेकिन कॉलर को उस परिवर्तन को देखना चाहते हैं। संदर्भ में इसे पास करना बेहतर है: (std::string &)

4) फंक्शन में स्ट्रिंग भेजना और फ़ंक्शन के कॉलर कभी स्ट्रिंग का उपयोग कभी नहीं करेंगे। चाल semantics का उपयोग एक विकल्प हो सकता है (std::string &&)





move-semantics