C++의 소멸자는 객체를 삭제하는 클래스의 멤버 함수입니다. 함수가 종료될 때, 프로그램이 종료될 때, 삭제 변수가 호출될 때와 같이 클래스 객체가 범위를 벗어날 때 호출됩니다.
소멸자는 인수를 취하지 않고 아무 것도 반환하지 않는다는 점에서 일반 멤버 함수와 다릅니다. 또한 소멸자는 클래스와 이름이 같으며 이름 앞에 물결표(~)가 붙습니다.
C++에서 소멸자를 시연하는 프로그램은 다음과 같습니다.
예시
#include<iostream> using namespace std; class Demo { private: int num1, num2; public: Demo(int n1, int n2) { cout<<"Inside Constructor"<<endl; num1 = n1; num2 = n2; } void display() { cout<<"num1 = "<< num1 <<endl; cout<<"num2 = "<< num2 <<endl; } ~Demo() { cout<<"Inside Destructor"; } }; int main() { Demo obj1(10, 20); obj1.display(); return 0; }
출력
Inside Constructor num1 = 10 num2 = 20 Inside Destructor
위의 프로그램에서 Demo 클래스는 n1과 n2가 제공하는 값으로 num1과 num2를 초기화하는 매개변수화된 생성자를 포함합니다. 또한 num1과 num2의 값을 출력하는 display() 함수도 포함되어 있습니다. Demo에는 클래스 개체의 범위가 종료될 때 호출되는 소멸자가 있습니다. 이에 대한 코드 스니펫은 다음과 같습니다.
class Demo { private: int num1, num2; public: Demo(int n1, int n2) { cout<<"Inside Constructor"<<endl; num1 = n1; num2 = n2; } void display() { cout<<"num1 = "<< num1 <<endl; cout<<"num2 = "<< num2 <<endl; } ~Demo() { cout<<"Inside Destructor"; } };
main() 함수는 Demo 클래스 유형의 객체에 대한 객체 정의를 포함합니다. 그런 다음 display() 함수가 호출됩니다. 이것은 아래에 나와 있습니다.
Demo obj1(10, 20); obj1.display();