C ++ 11 Standardı (ISO / IEC 14882: 2011) şöyle diyor § C.1.1:
char* p = "abc"; // valid in C, invalid in C++
C ++ için, bir Dize Değişmezine bir işaretçi olarak zararlıdır, çünkü herhangi bir değişiklik denemesi çökmeye neden olur. Peki neden C'de geçerlidir?
C ++ 11 ayrıca şunları söylüyor:
char* p = (char*)"abc"; // OK: cast added
Bu, ilk ifadeye bir yayın eklenirse geçerli olacağı anlamına gelir.
Döküm neden ikinci ifadeyi C ++ 'da geçerli kılıyor ve birincisinden nasıl farklı? Hala zararlı değil mi? Durum buysa, standart neden iyi olduğunu söyledi?
OK.
const, bu yüzden mutlaka değildi const.
char[]ilk etapta bir dize değişmez türü yaptı bilmiyorum . İkincisiconst_castkılık değiştirmiş.