C ++中的析构函数和自由函数有什么区别?

在这里,我们将看到析构函数和free()C ++中的函数之间的区别是什么。在销毁对象之前,析构函数用于执行某些操作。此操作可能不会释放内存,但是可以执行一些简单的操作,例如在屏幕上显示一条消息。

free()函数用在C中,在C ++中,我们也可以使用delete关键字执行相同的操作。使用free()或删除对象时,将调用析构函数。析构函数不接受任何参数,也不返回任何值。当使用free或delete或对象超出范围时,将调用此函数。

示例

#include<iostream>
#include<cstdlib>
using namespace std;
class MyClass {
   public:
      ~MyClass() {
         cout << "Destructor of MyClass" << endl;
      }
};
int main() {
   MyClass *obj;
   obj = new MyClass();
   delete obj;
}

输出结果

Destructor of MyClass

有时,该free()函数可能不调用析构函数,而是从内存中删除内容。因此,这里我们使用delete关键字代替free()