为什么程序在临时生命结束时没有崩溃?

时间:2018-04-25 05:40:12

标签: c++ temporary-objects

鉴于以下代码,它会发出警告:

  

警告:临时绑定到'Foo :: b'只会持续到   构造函数退出[-Wextra]

struct Bar {
    inline void print() const { std::cout << "Bar" << std::endl; }
};

struct Foo {
    Foo() : b{} {}                    // create temporary
    void print() const { b.print(); } // OK but I'm expecting a crash here
    Bar&& b;
};

Foo f;     // Expecting lifetime of temporary ends here
f.print(); // OK - prints "Bar"

我希望通过Bar::print()访问Foo::b会导致Foo的构造函数退出后崩溃。

程序如何在没有崩溃的情况下仍然调用Bar::print()

0 个答案:

没有答案