Académique Documents
Professionnel Documents
Culture Documents
Construction, destruction et
initialisation des objets
Remarque
Exemple
class point
{ ………………….
public :
point (int ,int ) ;
};
Déclaration correcte Déclaration incorrecte
point O1 (2, 7) ; point O2 ;
point O3 (17) ;
Remarque
Exemple
class point
{
point (int , int) ;
};
Exemple 2
……………….
……………………….
void main ()
{
point O(1,1) ;
O=point (5,2) ; O.affiche ( ) ;
O=point (7,3) ; O.affiche ( ) ;
}
Exemple
……………………
………………………..
void main ()
{
point *p ;
p=new point (7,2) ;
p->affiche () ; ou (*p).affiche () ;
p=new point (8,4);
p->affiche () ;
delete p ;
}
4. Tableaux d’objets
Exemple
point courbe[3] ;
5. Objets d’objets
Exemple
#include <……………>
class point
{
int x ,y ;
public :
point (int a =0, int b=0)
{
x = a; y = b;
cout<<″Construction du point : ″<<x<<″ - ″
<<y<<endl ;
}
~point ( )
{
cout<<″Destruction du point : ″<<x<<″ - ″
<<y<<endl ;
}
};
//--------------------------------------
class point_coul
{
point p;
int couleur;
public :
point_coul( int , int , int) ;
};
point_coul::point_coul(int a , int b ,int c) : p(a ,b ,c)
{
couleur = c ;
cout<<″Construction de point_coul en couleur : ″
<<couleur<<endl ;
}
//----------------------------
void main ()
{
point_coul pc(3,7,8) ;
}
Exemple
int n=2 ;
int m=3*n-7 ;
int t[3]={5,12,43} ;
Remarque
class point
{
int x, y ;
public :
point (int a)
{ x = a ; y=0 ;}
};
Exemple
point a;
Il est possible de déclarer un nouvel objet ‘b’ tel que :
point b=a ; // équivalente à point b(a) ;
Cette situation est traitée par C++, selon qu’il existe un
constructeur ou il n’existe pas de constructeur
correspondant à ce cas.
Remarque
#include <……………..>
class vect
{
int ne ;
double *p ;
public :
vect(int n)
{
p=new double [ne=n] ;
cout<<″Constructeur ordinaire :″
<<this<<″avec son tableau : ″
<<p<<endl ;
}
~vect ()
{
delete p ;
cout<<″Destruction objet : ″ <<
this<<″avec son tableau : ″
<<p<<endl ;
}
};
//---------------------------------------
void main ( )
{
vect a(3) ;
vect b=a ; // équivalente à ‘vect b(a) ;’
}
Exécution
Commentaire
#include<……………>
class vect
{
int ne ; double *p ;
public :
vect (int n)
{
p=new double [ne =n] ;
cout<<″Constructeur ordinaire : ″<<this
<<″avec son tableau : ″<<p<<endl ;
for (int i=0 ; i<ne ;i++)
p[i]=(i+1)*10;
}
vect (vect & v)
{
p=new double [ne=v.ne] ;
for (int i=0 ; i<ne ; i++) p[i]=v.p[i];
cout<<″Constructeur par recopie : ″
<<this<<″avec son tableau dynamique :
″ <<p<<endl ;
}
~vect ( )
{
delete p ;
cout<<″Destruction objet : ″<<this<<
″avec son tableau : ″<<p<<endl ;
}
};
Exercice 1
Exercice 2
Conception
Ecrire une class ‘pile_entier’ permettant de gérer une
pile (tableau) d’entiers, ces derniers seront conservés
dans un tableau d’entiers alloué dynamiquement. La
classe comportera les fonctions membres suivantes :
- pile_entier(int n) ; : constructeur allouant
dynamiquement un emplacement de n entiers.
- pile_entier() ; : constructeur sans
arguments allouant par défaut un
emplacement de 7 entiers.
- ~pile_entier() ; : destructeur.
- void empile(int e) ; : ajoute l’entier ‘e’ sur la
pile.
- int depile() ; : fournit la valeur de
l’entier situé en haut de la pile.
- int pleine() ; : fournit ‘1’ si la pile est
pleine.
- int vide() ; : fournit ‘1’ si la pile est
vide.
Programmation
Ecrire un programme permettant de créer :
- Un objet automatique ayant un tableau
dynamique de 4 éléments.
- Un objet automatique ayant un tableau
dynamique de ‘max’ éléments par défaut.
- 2 objets dynamiques successivement de 5 et
de ‘max’ éléments.
Solution exercice 1
Solution exercice 2