Namespaces
Variants

std::shared_ptr<T>:: operator*, std::shared_ptr<T>:: operator->

From es.cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
T & operator * ( ) const noexcept ;
(1) (desde C++11)
T * operator - > ( ) const noexcept ;
(2) (desde C++11)

Desreferencia el puntero almacenado. El comportamiento es indefinido si el puntero almacenado es nulo.

Contenidos

Parámetros

(ninguno)

Valor de retorno

1) El resultado de desreferenciar el puntero almacenado, es decir, * get ( ) .
2) El puntero almacenado, es decir, get ( ) .

Observaciones

Cuando T es un tipo array o (posiblemente calificado con cv) (desde C++17) void , no está especificado si la función (1) está declarada. Si está declarada, no está especificado cuál es su tipo de retorno, excepto que la declaración (aunque no necesariamente la definición) de la función debe estar bien formada. Esto hace posible instanciar std:: shared_ptr < void >

Cuando T es un tipo de array, no está especificado si la función (2) es declarada. Si es declarada, no está especificado cuál es su tipo de retorno, excepto que la declaración de la función debe estar bien formada.

(since C++17)

Ejemplo

#include <iostream>
#include <memory>
struct Foo
{
    Foo(int in) : a(in) {}
    void print() const
    {
        std::cout << "a = " << a << '\n';
    }
    int a;
};
int main()
{
    auto ptr = std::make_shared<Foo>(10);
    ptr->print();
    (*ptr).print();
}

Salida:

a = 10
a = 10

Véase también

devuelve el puntero almacenado
(función miembro pública)