std::shared_ptr::operator*, std::shared_ptr::operator->
Материал из cppreference.com
<tbody>
</tbody>
T& operator*() const noexcept; |
(1) | (начиная с C++11) |
T* operator->() const noexcept; |
(2) | (начиная с C++11) |
Разыменовывает сохранённый указатель. Поведение не определено, если сохранённый указатель имеет значение null.
Параметры
(нет)
Возвращаемое значение
1) Результат разыменования сохранённого указателя, т.е.
*get()2) Сохранённый указатель, т.е.
get()Примечание
Когда T является (возможно, cv-квалифицированным) void, не указано, объявлена ли функция (1).
Когда T является типом массива, не указано, объявлены ли эти функции-элементы, и если да, то каков их тип возвращаемого значения, за исключением того, что объявление (не обязательно определение) этих функций корректно. |
(начиная с C++17) |
Если какая-либо функция объявлена, несмотря на то, что она не указана, не указано, каков её возвращаемый тип, за исключением того, что объявление (хотя и не обязательно определение) функции гарантированно будет допустимым. Это позволяет создать экземпляр std::shared_ptr<void>.
Пример
Запустить этот код
#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
Смотрите также
| возвращает хранимый указатель (public функция-элемент) |