std::shared_ptr<T>::operator*, std::shared_ptr<T>::operator->
来自cppreference.com
< cpp | memory | shared ptr
工具库
动态内存管理
|
std::shared_ptr
成员函数 | ||||
修改器 | ||||
观察器 | ||||
shared_ptr::operator*shared_ptr::operator->
|
||||
(C++17)
|
||||
(C++20
前)
|
||||
非成员函数 | ||||
(C++20
前)(C++20
前)(C++20
前)(C++20
前)(C++20
前)(C++20)
|
||||
函数(C++20
中弃用)
|
||||
辅助类 | ||||
(C++20)
|
||||
推导指引(C++17) |
T& operator*() const noexcept;
|
(1) | |
T* operator->() const noexcept;
|
(2) | |
解引用所存储的指针。若存储的指针为空,则行为未定义。
参数
(无)
返回值
1) 解引用存储的指针所得的结果,即 *get()
2) 存储的指针,即 get()
注意
T
是(可有 cv 限定的) void 类型时,是否声明函数 (1) 是未指定的。
|
(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
参阅
返回存储的指针 (公开成员函数) |