3

我有这个示例代码:

struct A
{
    bool test() const
    {
        return false;
    }
};


template <typename T = A>
class Test
{
public:
    Test(const T& t = T()) : t_(t){}

    void f()
    {
        if(t_.test())
        {
            //Do something
        }
    }
private:
    const T& t_;
};

int main()
{
    Test<> a;
    a.f();
}

基本上我担心我在Test哪里存储对临时变量的 const 引用并在 methof 中使用它的构造函数f。临时对象引用会在内部保持有效f吗?

4

1 回答 1

7

它不会保持有效。初始化后临时对象将被销毁a。在您调用时,f您通过调用来调用未定义的行为test。只有以下内容有效:

// Valid - both temporary objects are alive until after the 
// full expression has been evaluated.
Test<>().f();
于 2010-12-09T09:20:08.887 回答