c++ - 是否允许引用变量在 C++ 中破坏它们的对象?

标签 c++

假设我们有以下(奇怪的)代码:

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/

相关文章:

c++ - 使用套接字与 C++ 中的守护进程交互

c++ - 如何使用FreeImage_Unload(),不丢失图像数据

使用不同编译器的 C++ 和可变参数

c++ - c++ '+'算子使用 '+='算子统一实现

c++ - C++ 中的 EOF 键是什么

c++ - 在对话框 (wxDialog) 中安装一个大网格 (wxGrid)

c++ - 代码不会继承,我不知道为什么

c++ - nan()函数的参数

c++ - C/C++ 将8字节数组转换为64位整数

c++ - 优化 memcpy