सी ++ 11 मानक (आईएसओ / आईईसी 14882: 2011) में कहते हैं § C.1.1
:
char* p = "abc"; // valid in C, invalid in C++
C ++ के लिए यह स्ट्रिंग के लिटर के लिए एक संकेतक के रूप में ठीक है हानिकारक है क्योंकि इसे संशोधित करने का कोई भी प्रयास दुर्घटना की ओर जाता है। लेकिन यह C में मान्य क्यों है?
C ++ 11 भी कहता है:
char* p = (char*)"abc"; // OK: cast added
जिसका मतलब है कि अगर किसी कलाकार को पहले बयान में जोड़ा जाता है तो वह वैध हो जाता है।
कास्टिंग C ++ में दूसरा स्टेटमेंट मान्य क्यों करता है और यह पहले वाले से अलग कैसे है? क्या यह अभी भी हानिकारक नहीं है? यदि यह मामला है, तो मानक ने क्यों कहा कि यह ठीक है?
OK
।
const
, इसलिए वे जरूरी नहीं थे const
।
char[]
पहली जगह में। दूसरा एकconst_cast
भेस में है।