Espacios de nombres
Variantes
Acciones

std::shared_ptr<T>::get

De cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Biblioteca de servicios
 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
T* get() const noexcept;
(hasta C++17)
element_type* get() const noexcept;
(desde C++17)

Devuelve el puntero almacenado.

Contenido

[editar] Parámetros

(Ninguno)

[editar] Valor de retorno

El puntero almacenado.

[editar] Notas

Un shared_ptr puede compartir la posesión de un objeto mientras almacena un puntero a otro objeto. get() devuelve el puntero almacenado, no el puntero gestionado.

[editar] Ejemplo

#include <iostream>
#include <memory>
#include <string_view>
 
int main()
{
    auto salida = [](std::string_view mensaje, int const* ptr) {
        std::cout << mensaje << *ptr << " en " << ptr << "\n";
    };
 
    int* ptr = new int(42);
    std::shared_ptr<int> pCompartido = std::make_shared<int>(42);
 
    salida("Puntero sin formato ", ptr);
//  salida("Puntero compartido ", pCompartido); // ERROR
    salida("Puntero compartido with get() ", pCompartido.get());
 
    delete ptr;
 
 
    std::cout << "\nDemo del constructor de alias de shared_ptr.\n";
    struct Base1 { int i1{}; };
    struct Base2 { int i2{}; };
    struct Derivada : Base1, Base2 { int i3{}; };
 
    std::shared_ptr<Derivada> p(new Derivada());
    std::shared_ptr<Base2> q(p, static_cast<Base2*>(p.get()));
    std::cout << "q comparte posesión con p, pero apunta al subobjeto Base2:\n"
              << "p.get(): " << p.get() << '\n'
              << "q.get(): " << q.get() << '\n'
              << "&(p->i1): " << &(p->i1) << '\n'
              << "&(p->i2): " << &(p->i2) << '\n'
              << "&(p->i3): " << &(p->i3) << '\n'
              << "&(q->i2): " << &(q->i2) << '\n';
}


[editar] Véase también

Desreferencia el puntero almacenado.
(función miembro pública) [editar]