begin process at 2012 02 10 01:03:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > COUTEZ ET CINEZ VOUS PROPRE CLASSES!

COUTEZ ET CINEZ VOUS PROPRE CLASSES!


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :27/02/2003 Date de mise à jour :27/02/2003 22:03:57 Vu :2 775

Auteur : Athanor

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

C'est une petite source qui permet de surcharger les opérateurs << et >> des classes iostream pour lui faire afficher ce que vous voulez. Donc, au lieu de créer une fonction membre du genre CFRAC::Afficher() qui afficerait la fraction, il est possible de faire cout << mafraction; ou cin >> mafraction;

Source

  • #include <iostream.h> //pour les flux d'E/S
  • #include <windows.h> //pour ralentir la compilation ;)
  • //la classe de Fraction (rien de bien compliqué)
  • struct CFrac
  • {
  • int den; //denominateur
  • int num; //nominateur
  • CFrac(int Sden, int Snum)
  • {
  • num = Sden;
  • den = Snum;
  • }
  • };
  • //on surcharge l'opérateur >> pour fonctionner avec des operateurs
  • //istream (comme tous les flux d'entree) et CFrac
  • istream& operator>>(istream& tampon, CFrac& frac)
  • {
  • char VariableTrouQuiSertJusteABoufferUnCaractere; //sa s'explique
  • //on extrait les nombres du flux, s'assurant d'enlever la / qui sert a rien
  • tampon >> frac.num >> VariableTrouQuiSertJusteABoufferUnCaractere >> frac.den;
  • //on retourne une référence afin de permettre le chainage
  • return tampon;
  • }
  • //on surcharge l'opérateur << pour fonctionner avec des operateurs
  • //ostream (comme tous les flux de sortie) et CFrac
  • ostream& operator<<(ostream& tampon,CFrac& frac)
  • {
  • //on insère les donnees a afficher dans le tampon de sortie
  • tampon << frac.num << "/" << frac.den;
  • //on retourne une référence afin de permettre le chainage
  • return tampon;
  • }
  • void main()
  • {
  • //on crée 3 fractions;
  • CFrac fraction1(5,2), fraction2(3,5),fraction3(5,1000);
  • //on les affiche sans problème
  • cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
  • cout << "Entrez 3 fractions sous forme de num/den num/den num/den" << endl;
  • //on les recoit sans problème
  • cin >> fraction1 >> fraction2 >> fraction3;
  • //on les raffiche sans problème
  • cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
  • }
#include <iostream.h> //pour les flux d'E/S
#include <windows.h> //pour ralentir la compilation ;)


//la classe de Fraction (rien de bien compliqué)
struct CFrac
{
	int den; //denominateur
	int num; //nominateur
	CFrac(int Sden, int Snum)
	{
		num = Sden;
		den = Snum;
	}

};

//on surcharge l'opérateur >> pour fonctionner avec des operateurs
//istream (comme tous les flux d'entree) et CFrac
istream& operator>>(istream& tampon, CFrac& frac)
{
	char VariableTrouQuiSertJusteABoufferUnCaractere; //sa s'explique
	//on extrait les nombres du flux, s'assurant d'enlever la / qui sert a rien
	tampon >> frac.num >> VariableTrouQuiSertJusteABoufferUnCaractere >> frac.den;
	//on retourne une référence afin de permettre le chainage
	return tampon;

}
//on surcharge l'opérateur << pour fonctionner avec des operateurs
//ostream (comme tous les flux de sortie) et CFrac
ostream& operator<<(ostream& tampon,CFrac& frac)
{
	//on insère les donnees a afficher dans le tampon de sortie
	tampon << frac.num << "/" << frac.den;
	//on retourne une référence afin de permettre le chainage
	return tampon;
}



void main()
{
	//on crée 3 fractions;
	CFrac fraction1(5,2), fraction2(3,5),fraction3(5,1000);
	//on les affiche sans problème
	cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
	cout << "Entrez 3 fractions sous forme de num/den num/den num/den" << endl;
	//on les recoit sans problème
	cin >> fraction1 >> fraction2 >> fraction3;
	//on les raffiche sans problème
	cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
	
}




 Sources du même auteur

Source avec Zip Source avec une capture JEU DE PACMAN EN DIRECTX
Source avec Zip CHANGER LES COULEURS SYSTÈME DE WINDOWS
CONVERTIR EN BINAIRE PAR DÉCALLAGES DE BITS
PRINTF MAISON: FONCTION AVEC PARAMÈTRES ILLIMITÉS

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de Haldwin le 01/03/2003 11:42:51

Salut Athanor,
Ton prog marche apparemment bien (je dis ça car je ne l'ai pas testé).
Je t'écris pour te faire deux petites (tres petites) remarks.
Tout d'abord, je voulais juste signaler que l'utilisation d'une classe avec "struct" est tres peu utilisé car peu d'interêt. La seule grosse différence est qu'en utilisant "struct" les membres sont par defaut d'acces 'public' alors qu'en utilisant "class" les membres sont par defaut d'acces 'private'. Cette structure a juste été gardée pour pouvoir compiler des prog en C. ça aurait été sympa que tu mettes un NB style: "j'ai utilisé "struct" pour ma classe mais en général il est recommandé d'utiliser "class"... "!
Pour ce qui est de la surdéfinition des 2 op &lt;&lt; et &gt;&gt;, il aurait été plus clair d'utiliser des fonctions amies... En fait il faut just que tu declare dans ta classe en public: "friend ostream& operator&lt;&lt;(ostream& tampon,CFrac& frac)"
Je sais que les fonctions amies sont tres peu utilisées mais pourtant on un interet certain pour quelques cas comme celui-la ou par exemple pour la surdefinition de l'operateur '+'...
Mis a part ces 2 remarks ki ne sont ke des remarks (et non des erreurs), je te felicite d'avoir commenté ton code car peu de personnes le font ( dont moi le premier )!!!
Bon dev,
H@ldwin.

Commentaire de Athanor le 05/03/2003 01:01:36

La seul raison pour laquelle j'ai fait des struct c'est justement pour éviter les fonctions amies (c'est plus simple)

Commentaire de Geolem le 05/12/2005 17:07:00

Ah enfin un code d'exemple pour la surcharge de << et >>.
Je t'en remercie ! Cependant, je l'ai fait avec une classe... c'est pas des plus compliqué de le faire avec ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales