std::unique_ptr<T,Deleter>::operator*, std::unique_ptr<T,Deleter>::operator->
来自cppreference.com
< cpp | memory | unique ptr
typename std::add_lvalue_reference<T>::type operator*() const noexcept(noexcept(*std::declval<pointer>())); |
(1) | (C++11 起) |
pointer operator->() const noexcept; |
(2) | (C++11 起) |
operator*
与 operator->
提供到 *this 所占有的对象的访问。
若 get() == nullptr 则行为未定义。
仅为单独对象的 unique_ptr
,即主模板提供这些成员函数。
参数
(无)
返回值
1) 返回 *this 所占有的对象,等价于 *get() 。
2) 返回指向 *this 所占有对象的指针,即 get() 。
异常
1) 若
pointer
拥有抛出的 operator*
则可能抛出。示例
运行此代码
#include <iostream> #include <memory> struct Foo { void bar() { std::cout << "Foo::bar\n"; } }; void f(const Foo& 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&)
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2762 | C++11 | 即使底层表达式为 noexcept , operator* 仍可为潜在抛出
|
添加了条件性异常说明 |
参阅
返回指向被管理对象的指针 (公开成员函数) |