c++ - 更改超出范围的变量引用

标签 c++

假设我有这段代码,它可以编译。 a2 超出范围后,a1 保持什么状态?它仍然是对 a2 的有效引用吗? a1 是否占用了无法再访问的内存?

class A
{
  public:
  void something();
};

void A::something()
{

}

A a1;

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

最佳答案

语句 a1 = a2; copys a2a1 使用复制赋值运算符A

a2 超出范围这一事实并不重要:a1.something(); 是明确定义的。

这里没有引用。

关于c++ - 更改超出范围的变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966843/

相关文章:

c++ - 动态和顺序命名和实例化小部件qt

c++ - 使用 C+11 和 Newlib 时出现错误 "sigemptyset was not declared in this scope"

c++ - 在这种情况下比较 std::vector 或 std::set 的时间复杂度 - 效率更高?

c++ - glUniformMatrix4fv 导致 GL_INVALID_OPERATION

c++ - 为什么有些包含文件只驻留在 tr1 中?

c++ - 递归函数中的段错误。使用 std::stack (C++)

c++ - 我正在尝试用 vector 拍摄

c++ - 使用 boost 从二进制到 xml 序列化

c++ - 在自定义容器类上反转基于范围的 for 循环

让 cin 读取返回字符的 C++