Ils sont initialisés avant le début du programme (c'est à dire avant main
est entré).
Lorsqu'il y a deux ou plusieurs définitions de données statiques) dans un seul fichier CPP, alors qu'ils sont initialisés dans l'ordre dans lequel elles sont définies dans le fichier (celui défini plus haut/plus élevés dans le fichier est initialisé avant la prochaine est).
Lorsqu'il y a deux ou plusieurs définitions de données statiques) dans plus d'un fichier CPP, l'ordre dans lequel les fichiers CPP sont traitées est pas défini/mise en œuvre spécifiques. C'est un problème si le constructeur d'une variable globale (appelée avant que le programme est démarré) fait référence à une autre variable globale définie dans un autre fichier CPP, qui n'aurait pas été encore construit. Toutefois, l'article 47 de Meyers Effective C++ (qui est intitulé s'Assurer que les objets globaux sont initialisés avant qu'ils ne soient utilisés) ne décrit un travail autour de ...
Définir une variable statique dans un fichier d'en-tête (il est statique, donc vous pouvez avoir plusieurs instances, sans que l'éditeur de liens se plaindre)
Ont le constructeur de cette variable invoquer tout ce dont vous avez besoin (en particulier, de construire le mondial des singletons déclaré dans les en-têtes)
... qui, selon elle, est une technique qui peut être utilisé dans certains système de fichiers d'en-tête par exemple, pour s'assurer que l' cin
global variable est initialisée avant même de vos variables statiques constructeurs l'utilisent.