返回对本地解除引用的指针

时间:2017-12-07 13:54:04

标签: c++ c++11 pointers

此代码的行为是否定义明确?返回的引用是否总是正确的? Bar :: method()调用总能顺利吗?

struct Bar
{
    void method() {...};
};

struct Foo
{
    static unique_ptr<Bar> bar_ptr;
    static Bar& get_reference()
    {
        return *bar_ptr;
    }
};

unique_ptr<Bar> Foo::bar_ptr = nullptr;

int main()
{
    Foo::bar_ptr = make_unique<Bar>();
    Foo::get_reference().method();

    return 0;
}

1 个答案:

答案 0 :(得分:0)

  

此代码的行为是否定义明确?

它是。

struct Bar终止后,main()的实例将超出范围,从而被销毁。