Rechercher : dans
Par :

Bonjour -- >Constructeur en c++

Dernière réponse le 6 déc 2006 à 07:08:52 abdel, le 15 nov 2003 à 13:13:08 
 Signaler ce message aux modérateurs

Bonjour
j'ai un petit probleme avec les constructeurs :

comment fonctionne les constructeurs
si vous pouvez me donner un exemple ou un site ou c'est tres
bien explique

merci a tous ceux qui repondrons

Meilleures réponses pour « bonjour >Constructeur en c++ » dans :
Les constructeurs et les destructeurs en langage C++ Voir La notion de constructeur Le constructeur est la fonction membre appelée automatiquement lors de la création d'un objet (en statique ou en dynamique). Cette fonction membre est la première fonction membre à être exécutée, il s'agit donc d'une...
Les fonctions en C++ : surcharge et paramètres par défaut. VoirLes fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Java - Constructeurs VoirLe constructeur: une méthode particulière Pour instancier une classe, c'est-à-dire créer un objet à partir d'une classe, il s'agit d'utiliser l'opérateur new. En réalité l'opérateur new, lorsqu'il est utilisé, fait appel à une méthode spéciale de...
Constructeur de copie VoirConstructeur de copie Le compilateur ne génère pas seulement un constructeur et un destructeur par défaut si l’utilisateur ne les a pas définis, il génère aussi un constructeur de copie qui est appelé chaque fois qu’une copie d’objet est réalisée en...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

batmat, le 16 nov 2003 à 17:15:28

Slt,
Ta question n'est pas assez précise pour un post dans un forum, que ne comprends tu pas en ce qui concerne les constructeurs ?

Cherche dans les supports de cours de CCM.

En gros, un constructeur c'est la première fonction associée à ton objet qui est appelée à son instanciation, c donc là que tu fais les allocations et les initialisations nécessaires, etc..

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?

Répondre à batmat

2

Goblins, le 5 déc 2006 à 13:34:14

Tout d'abord, Bonjour Batman,

j'ai une question un peux plus,précise au sujet des constructeur, dans les classes dérivée...(j'espère sincèrement que tu as une réponse...) J'ai une classe mère et une classe qui en hérite et tout ce passe à merveille, à coté de ça, j'ai une autre classe mère et la classe fille qui en hérite et mon constructeur par défaut dans ma classe fille n'est pas accepté par le compilateur, or, j'ai suivi exactelent le même protocle que pour la première.... Le compilateur me dit qu'il y un appel ambigus et qu'il y a définition de plusieurs constructeurs par défaut dans ma classe mère...

j'en suis déjà à plusieurs heures (voir jour) de recherche et un peux d'aide ne me ferrait pas de mal je pense... C'est probablement une bêtise mais ça bloque...

Je joint,
1. les messages d'erreur du compilateur
2. le code (.h) de mes deux classes.



1.Erreur compilateur:
warning C4520: 'CPersonnes' : multiple default constructors specified

error C2668: 'CPersonnes::CPersonnes' : ambiguous call to overloaded function

2.Code:
#ifndef _CPERSONNES_H_
#define _CPERSONNES_H_


#define VISUAL


#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#ifdef VISUAL
#include <iostream.h>
#endif


const int l_nom=60;
const int l_pre=60;
const int l_nai=11;

#define NUM unsigned int

class CPersonnes
{
friend ostream& operator<<(ostream& s, const CPersonnes& P);

protected:
char *nom;
char *prenom;
char *naissance;

public:
CPersonnes();
CPersonnes(char *n=0, char *p=0, char *d=0);
CPersonnes(const CPersonnes& P);
virtual ~CPersonnes();

//get set
char* getNom() const {return nom;}
char* getPrenom() const {return prenom;}
char* getNaissance() const {return naissance;}

void setNom(const char *n);
void setPrenom(const char *p);
void setNaissance(const char *d);

//methode classe
virtual void affiche() const;
};




class CMembrePersonnel:public CPersonnes
{
//friend ostream& operator<<()

private:
NUM numperso;

public:
CMembrePersonnel():CPersonnes()
{
setNumperso(0);
}

CMembrePersonnel(char *n, char *p, char *d, NUM nu):CPersonnes(n, p, d)
{
setNumperso(nu);
}

CMembrePersonnel( const CPersonnes& P, const CMembrePersonnel& M): CPersonnes(P)
{
setNumperso(M.getNumperso());
}

//virtual~CMembrePersonnel(void){;}

//get set
getNumperso() const {return numperso;}

setNumperso(const NUM n){numperso=n;}

//methode classe
void affiche() const;

};

#endif

Répondre à Goblins

3

Char Snipeur, le 5 déc 2006 à 17:15:22

Salut.
Ba oui, evidemment... Le problème ne viens pas vraiment du constructeur, mais de l'appel avec les paramètres par défaut !
si tu fait :
CPersonnes a().
Le compilo doit prendre quel constructeur ?
CPersonnes();
ou
CPersonnes(char *n=0, char *p=0, char *d=0);
Donc pour résoudre ton problème, il suffit de faire :
CPersonnes(char *n, char *p=0, char *d=0);
Moralité: toujours croire ce que le compilateur dit (surtout qd le message est aussi clair). Salutation !
Char Snipeur

Répondre à Char Snipeur

4

Goblins, le 5 déc 2006 à 18:57:39

Merci.

Répondre à Goblins

5

Lupin.A, le 5 déc 2006 à 19:06:10

Bonjour,

Je ne suis pas expert du C++ mais j'ai trouvé un truc pour bien
comprendre les constructeurs/destructeurs.

En cour de développement, n'hésitez pas à placer des [ cout ]
à l'intérieur du/des constructeurs.

ex:

cout >> "Constructeur numero 1 en action" >> endl;

cout >> "Destructeur numero1 en action" >> endl;


Lupin

Répondre à Lupin.A

7

Goblins, le 5 déc 2006 à 22:51:20

Oui, en effet il faut de fait inverser les <<, mais je ne pouvait m'aider d'un quelconque affichage parce que le compilateur refusait de linker -> pas d'exécutable...

Qu'a cela ne tienne, la technique est très pratique notemment pour les destructeur et les fonctions virtuel...

Répondre à Goblins

6

kilian, le 5 déc 2006 à 20:18:43

Il faut inverser les petites flêches avec cout....

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

8

Lupin.A, le 5 déc 2006 à 23:46:55

Re:

désolé pour l'erreur, mais comme je disais je ne suis pas expert et il y aura maintenant 3 ans que j'ai suivi ma formation en c++, et je ne pratique que sporadiquement.

Lupin

Répondre à Lupin.A

9

 kilian, le 6 déc 2006 à 07:08:52

Salut,

Je pense que je peux pardonner à quelqu'un une erreur de syntaxe en C++ ;-)

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian