Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 소멸자와 자유 함수의 차이점은 무엇입니까?

<시간/>

여기서 우리는 C++에서 소멸자와 free() 함수의 차이점을 볼 것입니다. 소멸자는 객체가 소멸되기 직전에 어떤 작업을 수행하는 데 사용됩니다. 이 작업은 메모리를 확보하지 못할 수 있지만 화면에 하나의 메시지를 표시하는 것과 같은 간단한 작업을 수행할 수 있습니다.

free() 함수는 C에서 사용되며 C++에서는 delete 키워드를 사용하여 동일한 작업을 수행할 수도 있습니다. free() 또는 delete를 사용하여 객체를 삭제하면 소멸자가 호출됩니다. 소멸자 함수는 인수를 취하지 않고 아무 것도 반환하지 않습니다. 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() 함수는 소멸자를 호출하지 않고 메모리에서 내용을 삭제할 수 있습니다. 그래서 여기에서 free() 대신에 delete 키워드를 사용했습니다.