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

Despre limbajul de programare C++ si biblioteca standard STL (forum moderat)

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

Mesajde 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:
Cod: Selectaţi tot
   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
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Înapoi la C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 2 vizitatori

cron