Namespaces
Variants

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

From 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) (начиная с C++11)
T * operator - > ( ) const noexcept ;
(2) (начиная с C++11)

Разыменовывает сохраненный указатель. Поведение не определено, если сохраненный указатель является нулевым.

Содержание

Параметры

(нет)

Возвращаемое значение

1) Результат разыменования сохраненного указателя, т.е., * get ( ) .
2) Сохраненный указатель, т.е., get ( ) .

Примечания

Когда T является типом массива или (возможно cv-квалифицированным) (since C++17) void , не определено, объявлена ли функция (1) . Если она объявлена, не определено, каков её возвращаемый тип, за исключением того, что объявление (хотя не обязательно определение) функции должно быть корректным. Это позволяет инстанцировать std:: shared_ptr < void >

Когда T является типом массива, не определено, объявлена ли функция (2) . Если она объявлена, не определено, каков её возвращаемый тип, за исключением того, что объявление функции должно быть корректным.

(since C++17)

Пример

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

Вывод:

a = 10
a = 10

Смотрите также

возвращает сохранённый указатель
(публичная функция-член)