[C++] Este char *p="abc" valid in C++?

Despre limbajul de programare C++ si biblioteca standard STL (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[C++] Este char *p="abc" valid in C++?

Post by Ovidiu Cucu » 31 Dec 2012, 12:21

Intrebare
Este declaratia char *p="abc" valida in C++?

Raspuns
Ca o regula generala, nu exista conversie implicita de la const la non-const.
Totusi, in limbajul C, "abc" care este un string literal, este de tipul array of (non-const) chars.
Deci, o declaratie de acest tip este perfect legala in C:

Code: Select all

   char *p = "abc";
C++, care este un limbaj derivat din C, a pastrat initial compatibilitate cu programele mostenite din C.
Deci, chiar daca in C++ un string literal este de tipul array of const char, standardele de C++ incluzand ISO/IEC 14882:2003 (C++03) au considerat ca legala declaratia de mai sus.
C++03
char* p = "abc"; // valid in C, deprecated in C++


Aceasta a fost insa schimbata in noul standard, ISO/IEC 14882:2011 (C++11) in care se spune clar:
C++11
char* p = "abc"; // valid in C, invalid in C++
Vezi si



Post Reply