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 wanneerunique_ptruit 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 laatsteshared_ptrwordt verwijderd. -
std::weak_ptr— zwakke verwijzing naar een doorshared_ptrbeheerd 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
}