Exercice langage C: Utilisation d'un constructeur et d'un destructeur
Rédigé par GC Team, Publié le 18 Février 2012, Mise à jour le Lundi, 07 Novembre 2022 23:10![](/images/thumb/45/default.png)
Imaginons une application qui traite des fichiers. Ces fichiers vont être lus en mémoire, traités puis sauvegardés. Une fois lu en mémoire, un fichier a deux caractéristiques, une adresse à partir de laquelle se situe le fichier et une longueur, ce qui se concrétisera par un pointeur et une longueur en nombre d’octets. Imaginons la classe "Fichier" avec un constructeur et un destructeur et les trois méthodes suivantes:
-la méthode "Creation" qui va allouer un certain espace à partir du pointeur P,
-la méthode "Remplit" qui va remplir arbitrairement cet espace (ces remplissages arbitraires sont la preuve de la bonne gestion mémoire car l’accès à une zone non déclarée provoque une violation d’accès),
-la méthode "Affiche" qui va afficher la zone mémoire pointée par P.
Puis écrivons un programme maître qui instancie notre classe par new, appelle nos trois méthodes et détruit l’objet par delete.
Découverte et travail des classes. Utilisation d'un constructeur et d'un destructeur.
#include
// déclaration de la classe Fichier
class Fichier
{
char* P;
unsigned int Lg;
public:
Fichier();
~Fichier();
bool Creation(unsigned int);
void Remplit();
void Affiche();
};
// constructeur
Fichier::Fichier()
{
P=NULL;
Lg=0;
}
// destructeur
Fichier::~Fichier()
{
delete P;
}
// méthode Creation
bool Fichier::Creation(unsigned int L)
{
if((P=(char*)malloc(L))==NULL) return false;
Lg=L;
return true;
}
// Méthode Remplit
void Fichier::Remplit()
{
for(unsigned int i=0;iLg;i++) P[i]='a';
}
// Méthode Affiche
void Fichier::Affiche()
{
for(unsigned int i=0;iLg;i++) coutP[i];
}
//-----Programma maître (main)--------------
void main(void)
{
Fichier* f=new Fichier();
if (f->Creation(10))
{
f->Remplit();
f->Affiche();
}
delete f;
}