Dia 4 - Constructors, Destructors e LBM

Matheus Gomes - Oct 2 - - Dev Community

Tive um dia movimentado, mas houve tempo para aprender uma coisinha nova em C++: os destructors!

Constructors já sabemos que é uma função especial que é chamada assim que um objeto de uma classe é criado.

Já o Destructor é utilizado para liberar recursos que são alocados dinamicamente. Um exemplo é nesse trecho de código do meu snake game:

#ifndef FOOD_H
#define FOOD_H

#include "raylib.h"

class Food {
public:
    Vector2 position;
    Texture2D texture;
    Food() {
        Image image = LoadImage("assets/apple.png");
        texture = LoadTextureFromImage(image);
        UnloadImage(image);

        position = GenerateRandomPosition();
    }
    ~Food() {
        UnloadTexture(texture);
    }
    void Draw();
    Vector2 GenerateRandomPosition();
};

#endif
Enter fullscreen mode Exit fullscreen mode

A variável texture aloca o valor da função LoadTextureFromImage assim que o objeto da classe é criado.
E no fim do escopo da função onde esse objeto foi instanciado, o destructor é invocado, chamando a função UnloadTexture.

Esse objeto foi instanciado na função main do meu aplicativo, então quando o programa é encerrado, o recurso alocado que corresponde a textura é liberados.

Sobre LBM:

LBM é um método numérico utilizado na física computacional, e é usado para criar solvers baseado nele.
Muito provavelmente vai ser utilizando esse método que vou criar meu primeiro solver. No canal do Wayne há uma série para assinantes que certamente irei ver. Na série ele coda um utilizando Zig, mas acredito que meu primeiro será em C++.

. . . . . . . . . . . . . . . . . . . . . .