为什么我在删除它的范围后输出为10 ?我创建了一个具有指针类型成员变量的类A和另一个具有另一个成员变量x的类B。现在我在堆上为 B 分配内存,值为10为x。为了创建A类的实例,我使用了x的内存地址。现在我正在删除对象 b 并打印类A的指针ref的值。我明白为什么我的输出为10,因为我们可以看到持有该值的内存不再保留在堆上?
#include<iostream>
using namespace std;
class A
{
public:
int *ref;
A(int *ref):ref(ref)
{
}
};
class B{
public:
int x;
B(int x):x(x){}
};
int main()
{
B *b=new B(10);
A a(&b->x);
delete b;
cout<<*a.ref<<endl;
}