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";
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:
Vezi siC++11
char* p = "abc"; // valid in C, invalid in C++
- Codexpert blog: Is char *p="abc" valid in C++?