更改超出范围的变量参考

  • 本文关键字:变量 参考 范围 c++
  • 更新时间 :
  • 英文 :


说我有此代码,它编译了。a2之后,a1持有什么范围?它仍然是a2的有效参考吗?a1是否占据不再可访问的内存?

class A
{
  public:
  void something();
};
void A::something()
{
}
A a1;
int main(void)
{
  {
    A a2;
    a1 = a2;
  }
  a1.something();
}

使用 cop a1的语句 a1 = a2; copies a2使用 copy cop sizhtment operation A

a2不重要的事实并不重要:a1.something();定义明确。

这里没有参考。

A2超出范围后A1保持什么?

什么都没有。它没有成员。

它仍然是对A2的有效参考?

不,从来没有。这是a2的副本。

a1是否占据不再可访问的内存?

否。但是,如果是A&,那将是一个悬空的参考。