此代码的行为是否定义明确?返回的引用是否总是正确的? 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;
}
答案 0 :(得分:0)
此代码的行为是否定义明确?
是它是。
在struct Bar
终止后,main()
的实例将超出范围,从而被销毁。