क्या फ़ंक्शन पैरामीटर में const std::string& पास करना छोड़ने का समय आ गया है?
सभी को नमस्ते! मैं C++ में नया हूँ और पुरानी किताबों और लेखों में लगातार सलाह देखता हूँ कि स्ट्रिंग को फ़ंक्शन में const std::string& के रूप में पास करें। लेकिन हाल ही में मुझे एक चर्चा मिली जहाँ कहा गया था कि C++11 और उसके बाद यह अब सबसे अच्छा अभ्यास नहीं है। कहा जाता है कि move-सिमैंटिक्स के कारण, स्ट्रिंग को कॉन्स्टेंट रेफरेंस के बजाय वैल्यू से पास करना अधिक कुशल है।
मैं पूरी तरह से भ्रमित हो गया हूँ। यहाँ मेरे कोड का एक उदाहरण है:
```cpp
void processData(const std::string& name) {
// ... name के साथ कुछ काम, लेकिन कॉपी नहीं
std::cout << name << std::endl;
}
void storeData(const std::string& name) {
// यहाँ मैं name को क्लास के सदस्य में सेव करना चाहता हूँ
m_name = name; // क्या यह कॉपी है?
}
```
पहला मामला — सिर्फ स्ट्रिंग पढ़ना। दूसरा — ऑब्जेक्ट के फील्ड में सेव करना। क्या वास्तव में const std::string& पुराना हो गया है? इसे कब उपयोग करना चाहिए?