# std::unique_ptr<T,Deleter>::operator*, std::unique_ptr<T,Deleter>::operator->

< 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++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
LWG 2762 | C++11 | 即使底层表达式为 noexcept ， `operator*` 仍可为潜在抛出 | 添加了条件性异常说明

### 参阅

get | 返回指向被管理对象的指针 (公开成员函数)