Membre du modèle statique C ++, une instance pour chaque type de modèle?
Généralement des membres statiques/objets d'une classe sont les mêmes pour chaque instance de la classe ayant le membre statique/objet. De toute façon si l'objet statique est partie d'un modèle de classe et dépend également de l'argument de modèle? Par exemple, comme ceci:
template<class T>
class A{
public:
static myObject<T> obj;
}
Si j'allais jeter un objet de A int
et un autre float
je pense qu'il y aurait deux obj
un pour chaque type?
Si je voulais créer plusieurs objets d'Un type de int
et plusieurs float
s, encore faudrait-il être deux obj
cas, depuis que je suis seulement à l'aide de deux types différents?
source d'informationauteur user240137
Vous devez vous connecter pour publier un commentaire.
Membres statiques sont différents pour chaque diffrent modèle d'initialisation. C'est parce que chaque modèle d'initialisation est une classe différente qui est généré par le compilateur la première fois qu'il rencontre spécifique de l'initialisation du modèle.
Le fait que membre statique des variables sont différentes est indiqué par le présent code:
Qui résultats dans
A<int>
etA<float>
sont de deux types différents, vous ne pouvez pas convertir entre eux en toute sécurité. Deux instances deA<int>
de partager les mêmes statique myObject.Il y a autant de membre statique des variables comme il existe des classes et cela s'applique également aux modèles. Chaque instanciation d'une classe de modèle crée uniquement une variable membre statique. Le nombre d'objets de celles basées sur des modèles de classes n'est pas pertinent.
En C++ modèles sont des copies de classes. Je pense que dans ton exemple, il y aurait une instance statique par modèle.