एक vector<int>(v1)
अभिव्यक्ति एक अस्थायी वस्तु पैदावार, और operator=
के दाईं ओर रखा जा सकता है, लेकिन अगर हम एक बयान के रूप में एक vector<int>(v1)
अभिव्यक्ति का उपयोग, उस में असफल हो जायेगी विजुअल स्टूडियो 2010 10.0.3031 9 .1 आरटीएमआरएल। निम्नलिखित कोड में विस्तृत त्रुटि जानकारी टिप्पणियों में है। ऐसा क्यों होता है?क्यों बयान "वेक्टर <int> (v1)," करता है असफल
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
vector<int> v3 = vector<int>(v1); //OK, deliberately code like this.
vector<int>(v1); //error C2086: “std::vector<_Ty> v1”: redefinition
पुस्तक में "सी ++ मानक कोडिंग: 101 नियम, दिशा निर्देश और सर्वोत्तम प्रथाओं", अध्याय 82 "स्वीकार किए जाते हैं मुहावरों का प्रयोग वास्तव में क्षमता हटना है और वास्तव में मिटा तत्वों"। एक बयान है:
container<_Type>(c).swap(c);
मुझे समझ नहीं आता और बस container<_Type>(c)
परीक्षण करना चाहते हैं, यह क्या मतलब है?
कृपया उन्हें कोड के रूप में चिह्नित करने के लिए कोड लाइनों के सामने चार रिक्त स्थान का उपयोग करें, और न्यूलाइन जोड़ें (भविष्य की पोस्ट के लिए, जैसा कि @Yu हाओ पहले से ही आपकी वर्तमान पोस्ट संपादित कर चुके हैं) – Thomas
"अगर हम 'वेक्टर (v1)' अभिव्यक्ति का उपयोग करते हैं बयान, [यह विफल रहता है] "- ठीक है लेकिन आप ऐसा क्यों करना चाहते हैं? यह क्या है कि आप पूरा करना चाहते हैं? –
आपको क्यों लगता है कि यह एक वैध कथन है? आप किस प्रभाव से अपेक्षा करते हैं? – kfsone