Tom's Guide > Forum > Programmation > C++ constructeur et destructeur...
Mot :    Pseudo :           
 

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.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

Répondre à Resurectin
- 0 +

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?

Répondre à mj71

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 ...

Répondre à boulde
- 0 +

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:

Répondre à mj71
- 0 +

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:

Répondre à mj71

je t'ai pas oublié mais j'ai pas eu le temps ...

je cherche un exemple et je te poste ca .. ;-)

au passage qq cours de C et C++

edit:

cours sur les classes

Répondre à boulde

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; }
....
}

Répondre à cibiti

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[i] = val;
}

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

void Affiche()
{
// a faire! -> affichage de largeur et hauteur
// ou affichage de l'image ds une fenetre
}

Répondre à boulde
Tom's Guide > Forum > Programmation > C++ constructeur et destructeur...
Aller à :

Il y a 270 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens