Sobes.tech
Junior — Middle

Welke soorten slimme pointers zijn er in C++?

sobes.tech AI

Antwoord van AI

In C++ zijn er verschillende hoofdtypen slimme pointers die helpen bij het beheren van de levensduur van objecten en het voorkomen van geheugenlekken:

  • std::unique_ptr — biedt exclusief eigendom van het object. Het object wordt vernietigd wanneer unique_ptr uit de scope gaat. Kan niet worden gekopieerd, maar wel worden verplaatst.

  • std::shared_ptr — implementeert referentietelling. Meerdere pointers kunnen hetzelfde object bezitten, dat wordt vernietigd wanneer de laatste shared_ptr wordt verwijderd.

  • std::weak_ptr — zwakke verwijzing naar een door shared_ptr beheerd object. Heeft geen invloed op de levensduur van het object, wordt gebruikt om cyclische verwijzingen te voorkomen.

Voorbeeld van gebruik:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> p1 = std::make_unique<int>(42);
    // std::unique_ptr<int> p2 = p1; // Fout bij kopiëren
    std::unique_ptr<int> p2 = std::move(p1); // Eigendom verplaatsen

    std::shared_ptr<int> sp1 = std::make_shared<int>(100);
    std::shared_ptr<int> sp2 = sp1; // Verhoogt de referentietelling

    std::weak_ptr<int> wp = sp1; // Verhoogt de teller niet

    std::cout << *sp2 << std::endl; // 100
}