What are the differences in string initialization in C++? -


क्या

  std :: string s1 ("foo") के बीच कोई अंतर है;  

और

  std :: स्ट्रिंग s2 = "foo";  

?

हां और नहीं।

< P> सबसे पहले स्पष्ट रूप से आरंभ किया गया है, और दूसरा प्रतिलिपि शुरू किया गया है। मानक पहले के साथ दूसरे को बदलने की अनुमति देता है व्यवहार में, उत्पादित कोड समान होता है।

संक्षेप में ऐसा होता है:

  std :: string s1 ("foo");  

फ़ॉर्म के स्ट्रिंग कन्स्ट्रक्टर:

  स्ट्रिंग (कॉन्स्ट char * s);  

को s1 के लिए कहा जाता है।

दूसरे मामले में एक अस्थायी रूप से बनाया गया है, और उल्लेख किया गया है कि earler निर्माता उस अस्थायी के लिए कहा जाता है। उसके बाद, प्रतिलिपि निर्माता का उपयोग किया जाता है। उदा:

  स्ट्रिंग s1 = string ("foo");  

व्यवहार में, दूसरा प्रपत्र अनुकूलित है, पहले के रूप में होना चाहिए। मैंने एक कंपाइलर नहीं देखा है जो दूसरे मामले को अनुकूलित नहीं करता है।


Comments

Popular posts from this blog

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

iphone - Smoothing a rounded stroke in Core Graphics -

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -