DEV Community

Cover image for Dia 4 - Constructors, Destructors e LBM
Matheus Gomes
Matheus Gomes

Posted on

1

Dia 4 - Constructors, Destructors e LBM

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++.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay