std::shared_ptr<T>::operator*, std::shared_ptr<T>::operator->
来自 cppreference.com
< cpp | memory | shared ptr
T& operator*() const noexcept; |
(1) | (自 C++11 起) |
T* operator->() const noexcept; |
(2) | (自 C++11 起) |
取消对存储的指针的引用。如果存储的指针为空,则行为未定义。
内容 |
[编辑] 参数
(无)
[编辑] 返回值
1) 取消对存储的指针的引用结果,即 *get().
2) 存储的指针,即 get().
[编辑] 备注
当 T
是 数组类型或(可能是 cv 限定的)(自 C++17 起) void
时,函数 (1) 是否已声明是不确定的。如果已声明,则其返回类型是未指定的,但函数的声明(虽然不一定定义)应格式正确。这使得实例化 std::shared_ptr<void>
当 |
(自 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
[编辑] 另请参见
返回存储的指针 (公有成员函数) |