更改超出范围的变量参考
Change a variable reference that is out of scope
说我有此代码,它编译了。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&
,那将是一个悬空的参考。
相关文章:
- 如何将向量分配给参考变量?
- 我有几个关于参考变量的问题
- 如果值来自成员变量,则复制初始化和参考初始化之间的C 差异
- 使用参考变量修改类私人变量
- 为什么参考变量在声明时需要初始化
- 参考变量参数与本地参考变量
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- 更改超出范围的变量参考
- 为什么要为具有参考成员变量的类生成默认的复印件
- 参考的复制构造可以使用私有成员变量
- 分配从方法返回到变量的参考
- 通过名称或索引参考成员变量
- 使用变量通过参考和C 中的值传递的时间
- 成员函数返回成员变量的RVALUE参考
- 在本地参考变量上工作
- 有条件地定义了C 中的参考变量
- 通过静态局部变量的参考/指针返回
- C 复制分配运算符,用于参考对象变量
- const参考变量初始化
- 如何禁止分配不参考变量