est-il possible de définir la valeur par défaut pour les variables d'une fonction de modèle en C ++?
Quelque chose comme ci-dessous: P>
template<class T> T sum(T a, T b, T c=????)
{
return a + b + c;
}
5 Réponses :
Oui!
Cependant, vous devriez au moins avoir une idée de ce que t pourrait être ou qu'il est inutile. p>
Vous ne pouvez pas définir la valeur par défaut des paramètres de modèle pour les fonctions, c'est-à-dire que cela est interdit. : p>
Essayez ceci:
template<class T> T sum(T a, T b, T c=T())
{
return a + b + c;
}
Oui, il suffit d'être un constructeur pour t code> de toute valeur que vous posez là-bas. Compte tenu du code que vous montrez, je suppose que vous voudriez probablement que cet argument soit 0 code>. Si vous souhaitez plus d'un argument au constructeur, vous pouvez mettre t (arg1, arg2, arg3) code> comme valeur par défaut. P>
Tout dépend des hypothèses que vous pouvez faire sur le type.
template <typename T> T sum( T a, T b, T c = T() ) { return a+b+c; }
template <typename T> T sum2( T a, T b, T c = T(5) ) { return a+b+c; }
Les arguments par défaut ne sont instanciés que si elles sont utilisées. Ce qui signifie que l'on peut mettre n'importe quelle chose folle qui ne serait pas compatible avec t code> du tout, ce qui serait bien tant que l'on réussirait un argument explicite.
Oui, vous pouvez définir une valeur par défaut.
template <class T>
T constructThird()
{
return T(1);
}
template <class T>
T test(T a,
T b,
T c = constructThird<T>())
{
return a + b + c;
}