J'ai une classe de modèle appelé Variable
, avec un constructeur spécialisé pour char *, qui est défini comme suit:Modèle de modèle-type de données
template<>
Variable<char*>::Variable(char * const &arg_value)
{
value = new char[strlen(arg_value) + 1];
strncpy(value, arg_value, strlen(arg_value));
value[strlen(arg_value)] = '\0';
}
Maintenant, j'ai cette déclaration, qui déclare un Variable<char*>
:
Variable<char*> stringVar = const_cast<char*>("Hi");
Dans ma définition Variable
, je ne ai jamais déclaré ou défini un constructeur de copie à un const char *. Cependant, la déclaration fonctionne parfaitement bien. Pourquoi est-ce? Je suis assez positif que stringVar
a un type de données de Variable<char*>
, mais cela fonctionne toujours. D'où vient cette mission?
Un signe égal dans la déclaration n'est pas une affectation. – chris
Est-ce le constructeur de la copie? – ZERO
'Variable' n'est pas une classe de modèle. C'est un * template de classe *. –