std::shared_ptr<T>::operator*, std::shared_ptr<T>::operator->
T& operator*() const noexcept;
|
(1) | (desde C++11) |
T* operator->() const noexcept;
|
(2) | (desde C++11) |
Desreferencia del puntero almacenado. El comportamiento no está definido si el puntero almacenado es nulo.
Parámetros
(Ninguno)
Valor de retorno
*get().get().Notas
Cuando T (posiblemente calificado-cv) es void, no se especifica si se declara la función (1).
|
Cuando |
(desde C++17) |
Si cualquiera de las funciones se declara a pesar de no estar especificada, no se especifica cuál es su tipo de retorno, excepto que se garantiza que la declaración (aunque no necesariamente la definición) de la función es legal. Esto hace posible instanciar std::shared_ptr<void>.
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
