Exercice 7: La surcharge des opérateurs en langage C++

La surcharge des opérateurs

[tab name=’Exercice langage C’]
Créer une classe matrice qui permet de gérer des matrices à 2 dimensions. Elle comprend les données membres privées : nombre de ligne, nombre de colonne et une gestion dynamique pour stocker les éléments (doubles) de la matrice.
Elle comprend un constructeur et un destructeur.
Elle comprend la surcharge de l’opérateur <<, de l’opérateur(), de l’opérateur new et de l’opérateur delete .
L’opérateur () devra être utilisé pour stocker les éléments dans la matrice.
Créer un programme permettant de tester la classe matrice.
[/tab][tab name=’Correction’]
#include <iostream.h>
#include<stddef.h> // utile pour size_t
#include<stdlib.h>
class matrice{
int nbres_lg;
int nbres_cl;
int *tab;
public:
matrice(int nblg,int nbcl);
friend ostream& operator<<( ostream& tmp,matrice d);
int* operator()(matrice& d);
void * operator new (size_t);
void operator delete(void *p);
void affiche();
};
matrice::matrice(int nblg,int nbcl){
nbres_lg=nblg;
nbres_cl=nbcl;
tab=new int[nbres_lg*nbres_cl];
for (int i=0;i<nbres_lg*nbres_cl;i++) tab[i]=0;
}
ostream& operator<<(ostream& tmp, matrice d){
for (int i=0; i<d.nbres_lg;i++){
for(int j=0;j<d.nbres_cl;j++){
tmp<<"tab["<<i<<"]["<<j<<"]="<<d.tab[(2*i*(d.nbres_cl-
1))+j]<<endl;
//voir cours de Mr Wilfart
//sur l'allocation des tableaux
}
}
return tmp;
}
int* matrice::operator ()(matrice& d){
for (int l=0;l<d.nbres_lg;l++)
{
for(int c=0;c<d.nbres_cl;c++)
{
cout<<"entrez la valeur que vous desirez pour la
matrice["<<l<<";"<<c<<"]:"<<endl;
cin>>d.tab[(2*l*(d.nbres_cl-1))+c];
}
}
return d.tab;
}
void * matrice::operator new(size_t sz){
cout<<"appel new"<<endl;
return malloc(sz);}
void matrice::operator delete(void *p){
free(p);
cout<<"appel delete\n";
}
void matrice::affiche(){
for (int l=0;l<nbres_lg;l++)
{
for(int c=0;c<nbres_cl;c++)
{
cout<<tab[(2*l*(nbres_cl-1))+c]<<endl;
}
}
}
void main(){
matrice a(2,2);
a(a);
a.affiche();
cout<<a;
matrice *b=new matrice(a); // en paramètre de ou il va chercher sa reference
// c a d d'une autre matrice
cout<<a;
delete b;
}

La surcharge des opérateurs

Exercice informatique, Correction exercice, exercices corrigés, Solution exercice, La surcharge des opérateurs

[/tab][end_tabset skin=”lightness” ]

Télécharger aussi :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *