Supposons que vous voulez construire une classe C + + pour représenter des nombres complexes depuis C + + ne comprend pas un type de données pour eux. La classe «complexe» doit manipuler des nombres de type int , float et double . Vous pouvez répéter le même code trois fois , ou vous pouvez l'écrire une fois et utiliser des modèles qui prennent en charge les types de données génériques. A la fin , votre classe ressemblera à l'une des classes de conteneurs STL. Instructions
1
se familiariser avec la syntaxe des templates si vous n'êtes pas déjà . Pour déclarer une classe de modèle , insérez la ligne de code suivante immédiatement au-dessus de la déclaration de classe , comme indiqué: Template classe Complex
{
//etc ..
2
Notez que «modèle» et «classe» sont les mots clés . "T" est le nom que vous donnez au type de données générique. T peut prendre la forme d'un int, float ou double. Vous devez toujours inclure «classe» et «T» entre crochets . Vous pouvez également utiliser le mot clé « typename » à la place de «classe». Bien que ces mots ont une signification quelque peu différente en C + + , pour les besoins de ce tutoriel , ils sont équivalents.
3
Utilisez "T" dans la déclaration de classe corps où vous souhaitez que le traitement générique . Profil d' «réel » et « imagerie » sont de type T car ils peuvent prendre l'identité de n'importe quel type de numéro. La fonction Real membre () est un prototype avec T car il peut retourner numéros de type int , float ou double : modèle
classe Complex {
T réel , imag ;
publique : < br > Complexe (const T r , const T i): réel ( (T) 0), ( (T) 0) {} T réel () const ;
//etc ..
Hôtels 4
Répéter la définition du modèle pour chaque fonction de membre que vous avez défini l'extérieur du corps de la classe . Aussi, placer le paramètre T à l'intérieur de chevrons et l'insérer entre le nom de la classe et de l' opérateur de portée , comme suit : Template
T Complex < T> :: réel () const {
retour réel ;
}
5
Démontrer un objet complexe qui utilise int et celui qui utilise float: int main () {
complexe Ni ( 4 , -5) ; //formulaire 4 - J5
Complexe nf ( 4.f. , - 5f ) ; //form 4.0 - J5.0
cout cout }
6
savoir comment utiliser les classes de conteneurs comme vecteur < T> et des algorithmes tels que copy () . Étude de la STL . Depuis la Standard Template Library est une bibliothèque générique construit des modèles , c'est un excellent endroit pour apprendre à construire des classes génériques en utilisant des modèles .