Bonjour tout le monde,

Je suis encore débutant en C++, et j'aurais aimé apprendre plus sur le comportement du destructeur dans la libération de la mémoire, mais d'abord voici le code avec lequel je pratique :

Fenetre.h:
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
 
#ifndef FENETRE_H
#define FENETRE_H
 
class Fenetre
{
    public:
 
        Fenetre();
        Fenetre(int width, int height, int x, int y);
        /******************************************************/
        void launch();
        /******************************************************/
        virtual ~Fenetre();
 
    protected :
 
        void terminate();
 
    private:
 
        /******************************************************/
        SDL_Window* window;
        SDL_Renderer* renderer;
        SDL_Event event;
        bool isRunning;
 
        int F_Width;
        int F_Height;
        int F_PosX;
        int F_PosY;
        /******************************************************/
 
};
 
#endif // FENETRE_H
Fenetre.cpp
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
#include <SDL2/SDL.h>
#include "Fenetre.h"
#include <iostream>
 
 
Fenetre::Fenetre() : F_Width (640),F_Height(480),F_PosX(0),F_PosY(0),isRunning(false)
{
 
   SDL_Init(SDL_INIT_EVERYTHING);
   window = SDL_CreateWindow("Test"
                             ,SDL_WINDOWPOS_CENTERED
                             ,SDL_WINDOWPOS_CENTERED
                             ,F_Width
                             ,F_Height
                             ,0);
   renderer = SDL_CreateRenderer(window, -1, 0 );
 
}
 
Fenetre::Fenetre(int width = 640, int height = 480,int x = 200, int y = 100)
{
 
    F_Width = width;
    F_Height = height;
    F_PosX = x;
    F_PosY = y;
    isRunning = false;
 
 
   SDL_Init(SDL_INIT_EVERYTHING);
   window = SDL_CreateWindow("Test"
                             ,F_PosX
                             ,F_PosY
                             ,F_Width
                             ,F_Height
                             ,0);
   renderer = SDL_CreateRenderer(window, -1, 0 );
 
}
 
void Fenetre::launch()
{
 
    isRunning = true;
    while(isRunning){
 
          while (SDL_PollEvent( &event )){
 
            if (event.type == SDL_QUIT){
 
             isRunning = false;
 
            }
 
              /**UPDATE THE CONTENT**/
              std::cout << "Updated !" << std::endl;
 
          }
 
 
    }
 
    terminate();
 
}
 
void Fenetre::terminate()
{
     std::cout << "Suppression du render et window" << std::endl;
     SDL_DestroyRenderer(renderer);
     SDL_DestroyWindow(window);
 
}
 
Fenetre::~Fenetre(){std::cout << "Suppression de l'objet" << std::endl;}
et pour finir le Main.cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#include <SDL2/SDL.h>
#include <iostream>
#include "Fenetre.h"
 
int main(int argc, char* argv[]){
 
    Fenetre * maFenetre = new Fenetre(800,600,10,10);
    maFenetre->launch();
    delete maFenetre;
 
  return 0;
}
Remarque : j'utilise Code::Blocks !

Pour mes questions :
-Est-ce que le destructeur fait son rôle ici, même s'il n'y a rien à l'intérieur ?
-Est-ce que je suis une structure correcte dans mon code ?

S'il y a d'autres remarques je serais heureux de les connaitre (bonnes ou mauvaises), Merci !