Habituellement, vous devriez préférer std::string
- dessus de la plaine char pointeurs. Ici, cependant, le char pointeur initialisé avec la chaîne de caractères littérale a un avantage significatif.
Il y a deux initialisations pour les données statiques. L'une, appelée initialisation statique, et l'autre, la dynamique de l'initialisation. Pour les objets qui sont initialisés avec des expressions constantes et qui sont des Gousses (comme des pointeurs), C++ exige que l'initialisation se passe au tout début, avant dynamique de l'initialisation se passe. L'initialisation d'une std::string sera fait de façon dynamique.
Si vous avez un objet de la classe d'un objet statique dans un fichier, et que l'on a besoin pour accéder à la chaîne lors de son initialisation, vous pouvez compter sur eux pour le set-up déjà lorsque vous utilisez l' const char* const
version, tout en utilisant l' std::string
version, ce qui n'est pas initialisé de manière statique, vous ne savez pas si la chaîne est déjà initialisé - parce que l'ordre de l'initialisation des objets dans l'ensemble de l'unité de traduction de limites n'est pas défini.