std::unique_ptr<T,Deleter>::operator*, std::unique_ptr<T,Deleter>::operator->
自 C++11 起
typename std::add_lvalue_reference<T>::type operator*() const
noexcept(noexcept(*std::declval<pointer>()));
pointer operator->() const noexcept;
自 C++23 起
typename std::add_lvalue_reference<T>::type operator*() constexpr
noexcept(noexcept(*std::declval<pointer>()));
pointer operator->() constexpr noexcept;
operator* 和 operator-> 提供对 `*this` 所拥对象的访问。
如果 `get() == nullptr`,行为是未定义的。
这些成员函数仅为 `unique_ptr` 的单个对象,即主模板提供。
参数
(无)
返回值
1)
返回 `*this` 所拥有的对象,等同于 `*get()`。
2)
返回指向 `*this` 所拥有的对象的指针,即 `get()`。
异常
1)
如果指针具有抛出 operator*,可能会抛出异常。
示例
#include <iostream>
#include <memory>
struct Foo {
void bar() { std::cout << "Foo::bar\n"; }
};
void f(const Foo&)
{
std::cout
<< "f(const Foo&)\n";
}
int main()
{
std::unique_ptr<Foo> ptr(new Foo);
ptr->bar();
f(*ptr);
}
结果
Foo::bar
f(const Foo&)