监控安装 ERP

系统集成论坛

 找回密码
 注册通行证

QQ登录

只需一步,快速开始

路由器交换机防火墙系统集成商城 优质产品采购平台
查看: 915|回复: 0
打印 上一主题 下一主题

为什么被删除的对象还能调用成员函数 !

[复制链接]

7

主题

9

帖子

65

积分

实习生

跳转到指定楼层
1
发表于 2013-7-3 13:52:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华为金牌代理
class A
{
public:
//A(){cout<<"执行了构造函数"<<endl;}
~A(){cout<<"执行了析构函数"<<endl;}
void Get(){cout<<"调用了Get函数"<<endl;}
private:
};
void main()
{
A b; //创建一个对象
b.~A(); //把他析构了....
b.Get(); //为什么还能调用函数
A *c=new A; //创建一个对象指针
delete c; //删除指针C
c->Get(); //为什么还能调用函数
c=new A; //创建了一个新的内存空间
delete c;
delete c; //问题又来了...vs2008为什么删除了两次内存空间居然不报错...
c->Get();  //又是正常调用,头大了
}



还是感谢之前版主的热心帮助.这次又有新的问题了....
我不解的是析构了对象,在我的理解就是删除了对象,那为什么还能用已经删除的对象访问成员函数,而创建一个对象指针(是否该这么叫呢?) 为什么用delete删除后,按理说连他的内存空间也删除掉了,就算是内存地址还存在,但是里面的值也不应该是原来的值了....为什么也是还能调用函数.
最后就是VS2008使用了两次删除指针空间的delete运算符,居然没提示内存错误...是编译器升级自动做了处理,还是说错误不可预测了.... vc++6里面一个空间删除两次直接会报错.

希望回答简单些....请别把一些高深的理论知识搬上来,真心看不懂....
如果我哪里有误解,麻烦指出来,谢谢!
提前谢谢回答的朋友
您需要登录后才可以回帖 登录 | 注册通行证

本版积分规则

联系我们| 手机版|系统集成论坛 ( 京ICP备11008917号 )

GMT+8, 2024-9-30 22:37 , Processed in 0.096840 second(s), 23 queries .

系统集成论坛

BBS.XTJC.COM

快速回复 返回顶部 返回列表