假设我们有以下(奇怪的)代码:
int* getPointer(int* p) {
int* x_p = nullptr;
int& x = *p;
if(x==7) {
x_p = &x;
}
return x_p;
}
由于 x
被赋予了 p
的值,我觉得这段代码是不安全的:当 x
超出范围时,它被关联对象可以被破坏,使 x_p
处于无效状态。
不过,我测试了这段代码,它运行良好。是我很幸运还是 x
是一个引用变量这一事实改变了销毁序列?
最佳答案
不,*p
显然不会简单地被 x
超出范围破坏,否则引用几乎每次使用它们时都会固有地导致双重“释放” .
关于c++ - 是否允许引用变量在 C++ 中破坏它们的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343003/