基本上,为什么C++/CLI中有一个finalize析构函数。看起来GC在收集对象之前,检查是否手动调用了delete,如果没有,则调用终结器。那么,如果未调用delete,为什么GC不能调用正常的析构函数呢?
发布于 2014-07-11 12:08:14
出于同样的原因,您在C#中有一个Dispose方法和一个终结器。粗略地说,在C++/CLI中,析构函数对应于Dispose,Finalilzer对应于终结器。我粗略地说,因为C++/CLI为您实现了处置模式。也就是说,如果调用delete (即调用析构函数),它将确保终结器被抑制。如果未调用delete,则终结器将在GC时运行。
就像在C#一样
如果您有终结器,那么析构函数调用终结器是常见的(也是很好的做法)。
这两个链接也可能有帮助:
https://stackoverflow.com/questions/24689213
复制相似问题