Spec-Zone.ru › C++

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

T& operator*() const noexcept;
(1) (since C++11)
T* operator->() const noexcept;
(2) (since C++11)

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

Параметры

(нет)

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

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

Примечания

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

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

(с 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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/shared_ptr/operator*

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API