Dans la programmation orientée objet, il est souvent nécessaire de déclarer des données membres statiques dans les modèles de classe. Cela peut être difficile en raison de la nature non intégrale inhérente de ces données membres. Une approche pour surmonter cette limitation consiste à séparer les instructions de déclaration et de définition.
Considérez l'exemple de code suivant :
template <typename T> struct S { ... static double something_relevant; // Declaration };
Cette déclaration crée un membre de données statique nommé "something_relevant" dans la classe. modèle "S". Cependant, comme il n'est pas de type intégral, le compilateur n'acceptera pas cette déclaration.
Pour résoudre ce problème, la définition de "something_relevant" peut être placée dans une instruction distincte :
template <typename T> double S<T>::something_relevant = 1.5; // Definition
En définissant le membre de données statique en dehors de la déclaration de classe, le compilateur peut garantir que la définition n'est évaluée qu'une seule fois, quel que soit le nombre d'instances du modèle de classe. créé.
Cette technique permet la création de données membres statiques au sein de modèles de classe, même si elles ne sont pas de type intégral. Cela garantit également que les données membres statiques sont initialisées avec la valeur correcte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!