function - Question about const_cast in c++ -


सभी: इसे प्रभावी C ++ 3rd editiion से उद्धृत किया गया है

const_cast को आमतौर पर डाली जाने के लिए उपयोग किया जाता है वस्तुओं की कटाई दूर यह एकमात्र सी ++ शैली का डाली है जो ऐसा कर सकता है।

मेरा प्रश्न एक गैर-कॉन्स्ट ऑब्जेक्ट में कॉन्स्टेस्ट को जोड़ सकता है? वास्तव में मैंने एक छोटा सा कार्यक्रम लिखा था जो मेरे विचार को स्वीकार करने की कोशिश कर रहा था।

  वर्ग constestest {सार्वजनिक: शून्य परीक्षण () {printf ("गैर-कॉन्स्ट संस्करण परीक्षण const फ़ंक्शन कॉल कर रहा है \ n"); } शून्य परीक्षण () कॉन्स्ट {printf ("कॉलिंग कॉन्स्ट संस्करण संस्करण कॉन्स्ट फ़ंक्शन \ n"); }}; Int main (int argc, char * argv) {ConstTest ct; Const constestest cct; cct.test (); Const_cast और lt; const constest & amp; & gt; (सीटी) .test (); // यह बयान '& amp; के बिना लिखना गलत है, क्यों}  

' & amp; C324 त्रुटि: 'const_cast': 'ConstTest' से 'const constestest' में कनवर्ट नहीं किया जा सकता है

यह दिखाता है कि const_cast constness जोड़ सकते हैं , लेकिन ऐसा लगता है कि आप किसी ऑब्जेक्ट संदर्भ में डालना चाहते हैं, इस संदर्भ का जादू क्या है?

कन्स्टेनेस जोड़ने के लिए आपको const_cast की आवश्यकता नहीं है:

  class C; सी सी; सी संधि और amp; Const_c = c;  

दूसरी ओर एक const_cast की आवश्यकता है

  const सी const_c; शिविर; C = const_cast & lt; सी & amp; & gt; (const_c);  

लेकिन यदि आप c पर गैर-कंस्ट्रक्ट ऑपरेशन का उपयोग करने का प्रयास करते हैं तो व्यवहार अनिर्धारित है।

वैसे, अगर आप नहीं करते हैं एक संदर्भ का उपयोग करें, ऑब्जेक्ट की एक प्रतिलिपि बनाई जा रही है:

  सी डी = const_c; // प्रतिलिपि const_c  

Comments