Si une chaîne est définie comme ceci
std::string name;
Quelle sera la valeur de la chaîne non initialisée "nom" et quelle serait sa taille?
Parce qu'il n'est pas initialisé, c'est le constructeur par défaut qui est appelé. Alors :
constructeur de chaîne vide (constructeur par défaut):
Construit une chaîne vide, avec une longueur de zéro caractère.
Jetez un oeil: http://www.cplusplus.com/reference/string/string/string/
EDIT: Comme indiqué dans C++ 11, §21.4.2/1:
Effets: construit un objet de classe chaîne_base . Les postconditions de cette fonction sont indiquées dans le tableau 63.
-> Table 63
+-----------------------------------------------------------------------------+
| data() | a non-null pointer that is copyable and can have 0 added to it |
+------------+----------------------------------------------------------------+
| size() | 0 |
+------------+----------------------------------------------------------------+
| capacity() | an unspecified value |
+-----------------------------------------------------------------------------+
Il n'est pas non initialisé, son constructeur par défaut est appelé.
De http://en.cppreference.com/w/cpp/string/basic_string/basic_string :
Constructeur par défaut. Construit une chaîne vide.
Les types définis par l'utilisateur construits par défaut ne sont pas non initialisés. Le constructeur par défaut définit une chaîne vide (c'est-à-dire ""
) avec une taille/longueur nulle.
La norme (C++ 11, §21.4.2/1) décrit les résultats de la construction par défaut d'un std::basic_string
(Dont std::string
Est une spécialisation) comme suit:
[...] un objet de classe
basic_string
. Les post-conditions sont [...] indiquées dans le tableau 63.
Et le tableau 63 dit:
data()
un pointeur non nul qui est copiable et peut y avoir 0 ajoutésize()
0capacity()
une valeur non spécifiée