निम्न कोड को ध्यान में रखते हुए:
वर्ग MyClass {सार्वजनिक: int someInt; मायक्लास (): कुछ इंट (666) {}}; Int main () {std :: map & lt; int, MyClass & gt; myMap; Std :: map & lt; int, MyClass & gt; :: iterator = myMap.end (); कॉन्स्ट मायक्लास & amp; रेफरी = यह- & gt; दूसरा; Std :: cout & lt; & lt; Ref.someInt & lt; & lt; std :: endl; } चूंकि नक्शा खाली है और यह = myMap.end () , क्या वस्तु it-> second संदर्भ करता है? क्या यह एक अमान्य संदर्भ है क्योंकि यह = myMap.end () ? मानचित्र & lt; int, MyClass & gt; का एक उदाहरण नहीं बनाता है MyClass ।
वस्तु क्या it-> दूसरा < / कोड> संदर्भ? क्या यह एक अमान्य संदर्भ है क्योंकि यह = myMap.end () ? वास्तव में myMap.end () एक वैध इटरेटर है लेकिन यह dereferenced नहीं होना चाहिए। यह-> दूसरा सही ढंग से करने का प्रयास करता है और अपरिभाषित व्यवहार का कारण बनता है। मानचित्र & lt; int, MyClass & gt; एक उदाहरण MyClass का। यह सच है, लेकिन अप्रासंगिक myMap.end () हमेशा myMap â ???? की सामग्री की कोई बात नहीं होगी एक पिछले एक अंत के लिए एक संदर्भ होते हैं ?? इटरेटर, जिसे कभी भी डीरेंस नहीं किया जाना चाहिए।
Comments
Post a Comment