without haste but without rest

[C++] 소멸자 본문

ProgrammingLanguage/C++

[C++] 소멸자

JinungKim 2020. 3. 2. 18:09

0. 소멸자

 

소멸자(Destructor)는 객체를 제거할 때 사용하는 문법이다.

객체의 수명이 다하면 컴파일러가 자동으로 소멸자 함수를 호출한다. 

소멸자를 정의할 수 있다.


1. 소멸자 예제 코드

 

클래스 이름과 동일하게 선언한다. ~Student() { }  부분이 소멸자를 정의하는 부분이다. (정의하지 않는 경우 디폴트로 아무것도 출력되지 않는다.)

#include <iostream>
#include <string>

using namespace std;

class Student {
private:
    string name;
    int age;
    int absent;
public:
    Student(string name, int age) : name(name), age(age), absent(0) {}
    ~Student() {
        cout << "객체 삭제";
    }
    void absentUp() { absent++; }
    void show() {
        cout << name << ", " << absent << endl;
    }
};

int main(void) {
    Student* s = new Student("Jack", 20);
    s->absentUp();
    Student s2(*s);
    s2.absentUp();
    s->show();
    s2.show();

    delete s;       // 동적 할당 했으므로 성공
    delete& s2;     // 동적 할당이 아니므로 오류 발생
    system("pause");
}

 


 

'ProgrammingLanguage > C++' 카테고리의 다른 글

[C++] 생성자  (0) 2020.03.02
[C++] 클래스  (0) 2020.03.02
[C++] 튜토리얼  (0) 2020.03.02
Comments