maintenant j'apprends C++, et maintenant je connais le concept de base de modèle, qui agissent comme un type générique, et j'ai trouvé presque tous les programmes C++ utilisés modèle, Donc, je veux vraiment savoir quand nous sommes supposés utiliser le modèle? Quelqu'un peut-il conclure votre expérience sur le modèle C++? Quand envisagez-vous d'utiliser le modèle?quand est-il préférable d'utiliser le modèle C++?
Supplément: si nous avons défini cette fonction
template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}
mais nous voulons passer pour la comparaison d'un objet (classe d'auto-défini), comment pouvons-nous mettre en œuvre?
Supplement2: dans la réponse ci-dessous, quelqu'un a écrit ce code exemple
template <class myType>
const myType& GetMax (const myType& a, const myType& b) {
return (a<b?b:a);
}
template <class myType, class Compare>
const myType& GetMax (const myType& a, const myType& b, Compare compare) {
return (compare(a,b)?b:a);
}
est-ce correct? peut-on simplement passer un nom de fonction en paramètre de la classe myType?
Les modèles ne sont pas toujours des types génériques. Les modèles peuvent également être des fonctions génériques, comme dans l'exemple que vous avez donné. – pyon
Re: complément 2. Vous pouvez passer un pointeur vers une fonction ("nom de fonction") ou un foncteur (classe surchargeant l'opérateur()) en tant que troisième paramètre de la deuxième surcharge. – UncleBens
@UncleBens: Bien sûr, c'est là que commence le vrai plaisir. Imaginez toutes les utilisations (et les abus!) Pour cela (surtout le dernier)! – pyon