Votre question

C++ constructeur et destructeur...

Tags :
  • Automobile
  • Programmation
Dernière réponse : dans Programmation
24 Août 2004 14:37:54

Bonjour a tous!j'ai une question a vous posez,je ne comprend pas a quoi serve les destructeur et constructeur d'une classe?
Mon livre d'aprentissage me dit de faire une implementation sur le destructeur pour que le programme soit plus inteligible.Mais dans celui ci je ne donne aucune instruction.
A quoi me sert il alors mis a part que le programme soi plus inteligible?
Peut on donner des instruction a un destructeur?
si oui lesquel?

Merci de bien voiloir m'expliquer au mieu le fonctionement des destructeur et constructeur.

Autres pages sur : constructeur destructeur

24 Août 2004 15:19:56

Alors qu'est-ce qu'un constructeur ?
c'est en fait une fonction qui s'executer a chaque fois que tu crées une variable d'un certain type

exemple :
tu crées une classe voiture
et tu mets un constructeur dedans qui met des valeur par defaut dans la variable

en faisant la declaration de la variable x de type voiture

voiture x;
a ce moment la, le constructeur se lance et donc conformement a ce qui est mi dedans, il va mettre de valeur par defaut dans cette variable de type voiture.

> pour le destructeur c'est un peu le meme fonctionnement mais ca a la destruction de celle-ci.
24 Août 2004 16:33:21

Daccord mais pour le destructeur quelqun peut etre plus precis et me dire si on peut faire une implementation avec instruction sur celui ci si oui comment?
Contenus similaires
24 Août 2004 16:40:32

il faudrait voir sur un exemple ... mais généralement on met pas grand chose ds le destructeur: on peut y désallouer la mémoire allouée par le constructeur ...
25 Août 2004 11:56:20

Est ce que qu'elqun peut me donner un exemple pour desaluer la memoir fourni par le constructeur en utilisant une implementation sur le destructeur?

Pour l'instant mon livre me dit de ne rien mettre a l'interieur de l'implementation du destructeure,alors si je comprend bien sa ne sert a rien mon implementation sans instruction?
Mis a part le faite que le codesource soit plus inteligible?

Si vous avez du mal a repondre a ma question pouvez vous simplement me dire ce que vous faite vous avec le destructeur,lui donner vous des instruction?
Si oui lesquels?

Merci a tout ceux qui m'aide! :gg:
26 Août 2004 14:45:09

Personne ne peut donc m'expliquer le fonctionement des constructeur et destructeur d'une classe avec un exemple ou deux avec une implementation sur le destructeur en donnant une instruction a celui ci?:confused:

Il y a donc aucun programeur c++ qui ne c'est me repondre... :crying:
26 Août 2004 15:02:42

un exemple simple serait que ta classe contienne un tableau comme attribut

dans ton constructeur, tu dois allouer de la mémoire à ce tableau pour que l'attribut soit utilisable lorsque tu y feras accès.

dans le destructeur, il faut désalouer cette mémoire afin qu'elle n'en occupe pas bêtement pour rien (ca t'évite les pb de manque de mémoire si l'application que tu programme est grande... et c'est une habitude à prendre...)

tout ce que tu a besoin de savoir entre le constructeur et le destructeur, c'est que c'est le constructeur qui est appelé automatiquement quand tu fait x = new MonObjet(....) et lorsque tu sors du bloc où x a été déclaré.

tiens, je viens de trouver cet exemple dans le bouquin de stroustrup (celui qui a fait c++):

class Name{
const char* s
....
}

class Table{
Name* p;
size_t sz;
public:
Table(size_t s = 15) // le constructeur
{ p = new Name [sz=s]; }
~Table() // le destructeur
{ delete [] p; }
....
}
26 Août 2004 15:12:51

un petit exemple définissant une classe pour les images:


//----------------------------------------------------
// déclaration de la classe CImage: CImage.h
//----------------------------------------------------

class CImage
{
int width;
int height;

public:
int *data; // tab contenant les valeurs des pixels

CImage();
CImage(int w, int h,int val);
~CImage();

void Affiche();
};


//----------------------------------------------------
// CImage.cpp
//----------------------------------------------------


// constructeur par défaut
CImage::CImage()
{
width = 256;
height = 256;
data = new int [width*height];
}

// constructeur d'une image de taille w*h ou tous les pixels valent val:
CImage(int w, int h,int val)
{
height = h;
width = w;
data = new int [width*height];

for(int i=0; i<width*height; i++)
data = val;
}

// destructeur
CImage::~CImage()
{
delete[] data;
}

void Affiche()
{
// a faire! -> affichage de largeur et hauteur
// ou affichage de l'image ds une fenetre
}
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS