为了账号安全,请及时绑定邮箱和手机立即绑定

求教:如图所示,在对象成员那章销毁对象的顺序问题,销毁时应该是先销毁对象,再销毁对象成员,可是当对象成员是指针时,为什么先销毁的是对象成员,再销毁的对象?

如图所示,在对象成员那章销毁(释放内存)对象的顺序问题,销毁时应该是先销毁对象,再销毁对象成员,可是当对象成员是对象指针时,为什么先销毁的是对象成http://img1.sycdn.imooc.com//57afe21f00019a8f04150216.jpg员,再销毁的对象?

正在回答

3 回答

不对,你在执行delete (Line对象指针)的时候就会执~Line,而类Line中的析构函数~Line中又有delete (Coordinate的对像指针)他就会先调用~Coordinate之后在打印输出“~Line”,他是cout写在了delete(Coordinate的对像指针)之后,如果是之前就会先打印,但是销毁对象的顺序还是先执行~line

0 回复 有任何疑惑可以回复我~
#1

qq_蕞終灬聽風者_0 提问者

非常感谢!
2016-10-24 回复 有任何疑惑可以回复我~

你把代码贴出来吧

0 回复 有任何疑惑可以回复我~

成员对象指针是在堆内存中申请内存的,需要自己手动去delete,所以你什么时候delete相应的对象,什么时候就执行它的析构函数。

0 回复 有任何疑惑可以回复我~
#1

qq_蕞終灬聽風者_0 提问者

问题就在这里:如果我没调用delete,那为什么会先出现Coordinate的析构函数,我并没有显示的调用Coordinate的delete函数。我只显示调用了Line的delete函数,我觉得应该是这样理解你帮我分析下有无道理:在这里函数默认Coordinate这两个对象是两个指针而不是对象,所以先调用的delete删除的是这两个指针,再调用~Line。
2016-08-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

求教:如图所示,在对象成员那章销毁对象的顺序问题,销毁时应该是先销毁对象,再销毁对象成员,可是当对象成员是指针时,为什么先销毁的是对象成员,再销毁的对象?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信