注册 登录
编程论坛 C++教室

关于析构函数的问题?

newyj 发布于 2008-03-24 21:16, 710 次点击
为什么析构函数在释放内存时 要 按成员在类中声明次序的逆序来释放
6 回复
#2
sunkaidong2008-03-24 22:03
把你的例子贴出来呢
#3
newyj2008-03-24 22:11
不好意思  这是 primer 上的一个语句 并没有什么例子
就是不知道为什么 要逆序释放
那顺序释放为什么不行
#4
zjl1382008-03-24 22:16
你问的是什么问题呢?
你说的应该是一个规定的,有规矩才成方圆,这样才不会在析构时乱了套。
另外,析构函数(destructor) 与构造函数相反,先构造当然理应最后析构,当然有很多例外,比如静态对象,临时对象的析构。。。。。。。
个人理解。。。。。。
THANKS
#5
sunkaidong2008-03-24 22:42
对于这类问题primer上有。。。如果你指的是单纯数据成员是没必要的。。如果你释放指针那是必须的避免内存泄露。。。。
#6
aipb20072008-03-25 00:14
[bo]以下是引用 [un]newyj[/un] 在 2008-3-24 21:16 的发言:[/bo]

为什么析构函数在释放内存时 要 按成员在类中声明次序的逆序来释放


比如你现在要清理两个东西 a,b
在构造时a先于b,(假设b的构造是基于a的)
那么析构时如果先清理a,那么b在清理时就出问题了,因为a已经不存在了。

道理就是这样,不过这样的事情是编译器在处理而不是你。
#7
newyj2008-03-25 10:50
谢谢 楼上几位的解答 谢谢了
1