Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Utilities library
Language support
Type support (basic types, RTTI)
Library feature-test macros (C++20)
Dynamic memory management
Program utilities
Coroutine support (C++20)
Variadic functions
Debugging support
(C++26)
Three-way comparison
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
General utilities
Date and time
Function objects
Formatting library (C++20)
(C++11)
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)   
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Elementary string conversions
(C++17)
(C++17)

 
Dynamic memory management
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Allocators
Garbage collection support
(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) (since C++11)
T* operator->() const noexcept;
(2) (since C++11)

Dereferences the stored pointer. The behavior is undefined if the stored pointer is null.

Contents

[edit] Parameters

(none)

[edit] Return value

1) The result of dereferencing the stored pointer, i.e., *get().
2) The stored pointer, i.e., get().

[edit] Remarks

When T is an array type or (possibly cv-qualified)(since C++17) void, it is unspecified whether function (1) is declared. If it is declared, it is unspecified what its return type is, except that the declaration (although not necessarily the definition) of the function shall be well formed. This makes it possible to instantiate std::shared_ptr<void>

When T is an array type, it is unspecified whether function (2) is declared. If it is declared, it is unspecified what its return type is, except that the declaration of the function shall be well-formed.

(since C++17)

[edit] Example

#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();
}

Output:

a = 10
a = 10

[edit] See also

returns the stored pointer
(public member function) [edit]