class B
{
public:
B(int y){ x = y; };
void Func(void)
{
cout << “Func of class B” << endl;
}
int x;
};
int main()
{
B *p = NULL;
if (p==NULL)
{
B b(5);
p = &b;
}
p->Func();
cout << p->x << endl;
return 0;
}
b已经析构了,为什么p->还输出了5.
新手,见笑了,望指点
{
public:
B(int y){ x = y; };
void Func(void)
{
cout << “Func of class B” << endl;
}
int x;
};
int main()
{
B *p = NULL;
if (p==NULL)
{
B b(5);
p = &b;
}
p->Func();
cout << p->x << endl;
return 0;
}
b已经析构了,为什么p->还输出了5.
新手,见笑了,望指点
解决方案
5
那块内存还存在,没有被写
10
这是未定义行为,可能那片内存还未被其他数据覆盖,你可以在调用其他函数后再次输出一下,可能就是其他值了
20
析构了不代表内存被改写或清零