मैं सिर्फ एक समारोह लिखा है:std :: string इस चाल का प्रबंधन कैसे करता है?
void doSomeStuffWithTheString(const std::string& value) {
...
std::string v = value;
std::cout << value.c_str();
...
}
लेकिन तब मैं
doSomeStuffWithTheString("foo");
के साथ इस फोन है और यह काम करता है। तो मैंने सोचा होगा कि यह काम करने के लिए (एक कॉन्स char * std :: स्ट्रिंग के एक अंतर्निहित उदाहरण को शुरू करने के लिए) मूल्य को मूल्य से पारित करना होगा, लेकिन इस मामले में (कॉन्स) संदर्भ द्वारा पारित किया जाना चाहिए।
किसी भी मौके से संदर्भित होने पर कॉन्स्ट char * से तत्काल अस्थायी अस्थायी std :: स्ट्रिंग है? यदि नहीं, तो यह संभवतः कैसे काम करता है?
संपादित
अगर समारोह
void doSomeStuffWithTheString(const char* value);
जो एक संकलक का चयन करेंगे के साथ ओवरलोड हो गया है क्या होता है?
आपने बहुत अधिक अपने प्रश्न का उत्तर दिया :) – pezcode
दिलचस्प, उसे नहीं पता था। ऑब्जेक्ट को ऐसा करने की क्या ज़रूरत है, ऐसे अंतर्निहित रचनाकारों को कॉन्स-बाय-रेफ कॉल (और इससे कैसे बचें?) – lurscher
प्रोग्राम खराब है: 'std :: string = value;' मान्य नहीं है और अपने कंपाइलर द्वारा खारिज किया जाना चाहिए। –