A destructor runs automatically when an object is destroyed.

Destructors

destructors.cpp
#include <iostream>
#include <string>

class Tracker {
private:
    std::string label;

public:
    Tracker(std::string name) {
        label = name;
        std::cout << "create=" << label << std::endl;
    }

    ~Tracker() {
        std::cout << "destroy=" << label << std::endl;
    }

    void use() {
        std::cout << "use=" << label << std::endl;
    }
};

int main() {
    std::string label = ;

    Tracker tracker(label);
    tracker.use();
    return 0;
}
#include <iostream>
#include <string>

class Tracker {
private:
    std::string label;

public:
    Tracker(std::string name) {
        label = name;
        std::cout << "create=" << label << std::endl;
    }

    ~Tracker() {
        std::cout << "destroy=" << label << std::endl;
    }

    void use() {
        std::cout << "use=" << label << std::endl;
    }
};

int main() {
    std::string label = ;

    Tracker tracker(label);
    tracker.use();
    return 0;
}
#include <iostream>
#include <string>

class Tracker {
private:
    std::string label;

public:
    Tracker(std::string name) {
        label = name;
        std::cout << "create=" << label << std::endl;
    }

    ~Tracker() {
        std::cout << "destroy=" << label << std::endl;
    }

    void use() {
        std::cout << "use=" << label << std::endl;
    }
};

int main() {
    std::string label = ;

    Tracker tracker(label);
    tracker.use();
    return 0;
}
destructor A destructor starts with `~` and usually releases or closes something owned by the object.