Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Méthodes d'un Pointeur Unique | Pointeurs Uniques
Pointeurs Intelligents C++

book
Méthodes d'un Pointeur Unique

Étant donné que std::unique_ptr est un modèle de classe, il fournit diverses méthodes pour se gérer en toute sécurité.

main.cpp

main.cpp

copy
#include <iostream>
#include <memory>

struct Sample {
Sample(int v)
: value(v) {}
int value;
void GetValue() { std::cout << "Value: " << value << std::endl; }
};

int main()
{
// Creating a `unique_ptr`
std::unique_ptr<Sample> p_first = std::make_unique<Sample>(10);

// Using `get()` to retrieve the raw pointer
Sample* p_raw = p_first.get();
std::cout << "Raw pointer value: " << p_raw->value << std::endl;

// Using `release()` to transfer ownership
Sample* p_released = p_first.release();
if (!p_first)
std::cout << "p_first is now empty after release.\n";

// Manually delete the released pointer to avoid memory leak
delete p_released;

// Resetting the `unique_ptr`
p_first.reset(new Sample(20));
p_first->GetValue();

// Using `swap()` with another `unique_ptr`
std::unique_ptr<Sample> p_second = std::make_unique<Sample>(30);
p_first.swap(p_second);
p_first->GetValue(); // Now `p_first` owns `p_second` object
12345678910111213141516171819202122232425262728293031323334353637383940414243
#include <iostream> #include <memory> struct Sample { Sample(int v) : value(v) {} int value; void GetValue() { std::cout << "Value: " << value << std::endl; } }; int main() { // Creating a `unique_ptr` std::unique_ptr<Sample> p_first = std::make_unique<Sample>(10); // Using `get()` to retrieve the raw pointer Sample* p_raw = p_first.get(); std::cout << "Raw pointer value: " << p_raw->value << std::endl; // Using `release()` to transfer ownership Sample* p_released = p_first.release(); if (!p_first) std::cout << "p_first is now empty after release.\n"; // Manually delete the released pointer to avoid memory leak delete p_released; // Resetting the `unique_ptr` p_first.reset(new Sample(20)); p_first->GetValue(); // Using `swap()` with another `unique_ptr` std::unique_ptr<Sample> p_second = std::make_unique<Sample>(30); p_first.swap(p_second); p_first->GetValue(); // Now `p_first` owns `p_second` object // Dereferencing the pointer std::cout << "Dereferencing p_first: " << (*p_first).value << std::endl; // Accessing members using `->` operator p_first->GetValue(); }
question mark

Que fait la fonction reset() lorsqu'elle est appelée sans paramètre ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt