Bonjour,
je développe habituellement en Java (j'ai de très lointaines connaissances en C), mais je dois utiliser Java Native Interface pour appeler du code C++.
Je me suis donc plongé (par curiosité... et bien grand mal m'en a pris...) dans le code C++ que je dois appeler depuis Java.
Malgré avoir lu les tutos sur l'allocations/désallocation en C++, j'ai des doutes sur ce code, je souhaiterai donc quelques explications svp.
Le développeur utilise la classe suivante :
Code c++ : 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 template <int d> class Point { public: double coord[d] ; Point() { } Point (const Point& p) // copy from Point { for (int i=0 ; i < d ; ++i) coord[i] = p.coord[i] ; } Point (const double* p) // copy from double* { for (int i=0; i < d ; ++i) coord[i] = p[i] ; } Point& operator = (const Point& p) // assignment { if ( this != &p ) memcpy(p.coord, coord, d) ; //for (int i=0; i < d ; ++i) coord[i] = p.coord[i] ; return *this ; } double& operator [] (int i) // coordinate access { return coord[i] ; } const double& operator [] (int i) const { return coord[i] ; } const double* begin() const { return coord ; } const double* end() const { return coord+d ; } } ;
qui est appelé ensuite dans une fonction.
Venant du java, j'ai été surpris que l'on utilise pas "Point<d> p = new Point()". Mais comme on n'initialise pas la classe, je suppose que l'appel à un constructeur vide grace au "new" est inutile. Ai je raison ?
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 const int d = 2 ; Point<d> p ; p[0] = 1.0 ; p[1] = 2.0 ;
Je suis ensuite surpris par le fait qu'il n'y ai pas de destructeur dans la classe, surtout à cause du fait que la classe contient un tableau de double.
"Point<p> p" une variable locale dans une fonction, donc elle devrait être automatiquement désalloué à la sortie de la fonction. Mais j'ai un doute sur le tableau.
Merci par avance,
Partager