Class A
    {
     A(int& foo) : m_foo(foo) {}

     int& m_foo;
    };


int main(void)
{
 A* bar = 0;
 {
   int var = 5;
   bar = new A(var);
 }
 std::cout << "Is m_foo still valid?:" << bar.m_foo << std::endl;
}

"m_foo"是一个引用,"var"是一个局部变量,它被赋予构造函数。 “var”在打印值之前超出范围,所以它是否使 m_foo 也无效?

如果 m_foo 是一个指针,那么它是无效的,但它与引用的工作方式相同吗?

最佳答案

m_foo 超出范围时,int var 无效。它所指的东西已经消失了。

关于C++:类成员引用有效性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4198711/

10-11 22:41
查看更多