Bonjour,
je travail sur un exercice en C++ o� c'est demander de compl�ter une classe Point:
de fa�on qu�elle dispose de deux fonctions membre permettant de conna�tre, � tout instant, le nombre total d�objets de type point, ainsi que le nombre d�objets dynamiques (c�est-�-dire cr��s par new) de ce m�me type.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 class point { int x, y ; // ....... public : point (int abs=0, int ord=0) // constructeur // ..... } ;
ma proposition, qui compile sans erreur, de code est la suivante:
je veux bien savoir, s'il vous plait, la diff�rence entre mon code et l'int�r�t de surd�finir new et delete dans la correction propos�e par le correcteur
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <iostream> static int compteur_objet=0; class point { int x, y ; public : point (int abs=0, int ord=0) // constructeur { x=abs; y=ord; compteur_objet++; } ~point() { compteur_objet--; } // ..... static int fct() { return compteur_objet; } } ; using namespace std; int main() { point p(1,2); point *h; point* q=new point(2,4); int c=point::fct(); cout<<"le nombre d'objet cree est "<<c<<endl; delete q; return 0; }
compilation :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #include <stddef.h> // pour size_t #include <iostream> using namespace std ; class point { static int npt ; // nombre total de points static int nptd ; // nombre de points dynamiques int x, y ; public : point (int abs=0, int ord=0) // constructeur { x=abs ; y=ord ; npt++ ; } ~point () // destructeur { npt-- ; } void * operator new (size_t sz) // new surdéfini { nptd++ ; return ::new char[sz] ; // appelle new prédéfini } void operator delete (void * dp) { nptd-- ; ::delete (dp) ; // appelle delete prédéfini } static int npt_tot () { return npt ; } static int npt_dyn () { return nptd ; } } ; int point::npt = 0 ; // initialisation des membres statiques de point int point::nptd = 0 ; #include "point.h" #include <iostream> using namespace std ; main() { point * ad1, * ad2 ; point a(3,5) ; cout << "A : " << point::npt_tot () << " " << point::npt_dyn () << "\n" ; ad1 = new point (1,3) ; point b ; cout << "B : " << point::npt_tot () << " " << point::npt_dyn () << "\n" ; ad2 = new point (2,0) ; delete ad1 ; cout << "C : " << point::npt_tot () << " " << point::npt_dyn () << "\n" ; point c(2) ; delete ad2 ; cout << "D : " << point::npt_tot () << " " << point::npt_dyn () << "\n" ; }
merci !A : 1 0
B : 3 1
C : 3 1
D : 3 0
Partager