【发布时间】:2019-02-03 03:28:32
【问题描述】:
我在 C++ 中使用指针创建了一个动态对象。我为动态对象设置了值。然后我删除指针,但是当我尝试打印动态对象的值时,它保持不变。
我试图打印指针的值,它是动态对象的地址,在我删除指针之前和之后它保持不变。
#include<iostream>
using namespace std;
struct students
{
string name;
int agee;
};
int main()
{
students *p = NULL;
p = new students;
(*p).name = "Vu Trung Nghia";
(*p).agee = 20;
cout << p->name << " " << p->agee << endl;
delete p;
if(p == NULL)
cout << "It was deleted";
else
cout << (*p).name << " " << (*p).agee << endl;
}
我希望结果是:p == NULL or can't print "Vu Trung Nghia 20" 实际结果:“Vu Trung Nghia 20”
【问题讨论】:
-
您是否遇到分段错误?
-
C++ 程序是懒惰的。他们做了完成工作所需的绝对最低限度。从好的方面来说,这就是让他们快速的原因。不利的一面是,它们给你留下了很大的余地,让你在脚上被击中。除非 C++ 标准明确声明它会发生,否则不要假设您没有要求的任何事情。如果您不确定,请查看。如果你仍然不确定,假设你必须自己做。
标签: c++