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; }