如果非动态变量被指针引用,何时超出范围?

When does a non-dynamic variable goes out of scope if being referenced by a pointer?

本文关键字:何时超 范围 引用 指针 动态 变量 如果      更新时间:2023-10-16

我是C++编程新手,我很难理解一些概念。

以这段代码为例:

// Example program
#include <iostream>
class nber
{
int* value;

public:  
nber(int n)
{
value = &n;
}
int getNber()
{
return *value;
}
};
int main()
{
nber var(111);
std::cout << "The number is:" << var.getNber() << "n";
}

如您所见,nber 构造函数接收一个整数 n 并将其地址传递给 "value" 指针。我期望的是有某种不需要的行为,因为接收到的整数 (n( 的作用域在构造函数结束时立即结束,但输出是:

数字是:111

所以范围没有结束?如果它真的没有结束,用于存储变量 n 的内存何时释放?谢谢。

范围确实结束了。你看到的是未定义的行为 - 任何事情都可能发生。就规则而言,这个数字可能是"紫色的"。或者您的硬盘可能会被删除。不过,后者有点罕见。