Post

[C++] 생성자와 소멸자 #7

1. 생성자

생성자는 클래스가 객체를 생성할 때 실행되는 함수 입니다.
생성자는 매개변수를 받아 속성에 값을 할당하고 객체를 생성하는 등 말 그대로의 생성의 역할을 담당합니다.

1
2
3
4
5
6
7
8
9
10
class Human {
public:
    int age;
    int height;

    Human(int age, int height) {
        this->age = age;
        this->height = height;
    }
}

위 코드는 생성자의 매개변수로 받은 ageheight를 객체 속성에 값으로 할당하는 코드입니다.

1-1. 기본 생성자

클래스는 생성자를 정의하지 않고 선언하는 경우 기본 생성자가 생성됩니다.
기본 생성자는 매개변수 없이 존재하는 생성자로 생성된 객체에 속성들은 0또는 NULL로 할당됩니다.

1
2
3
4
5
6
7
8
9
class Human {
public:
    int age;
    int height;
}

int main() {
    Human human();
}

main함수에서 Human을 생성할 때 생성자로 인자를 전달해주지 않는 모습을 볼 수 있습니다.


1-2. 복사 생성자

복사 생성자는 그 클래스로 생성된 다른 객체의 참조값을 매개변수로 받아 새로운 객체를 생성하는 생성자입니다.

1
2
3
4
5
6
7
8
9
10
class Human {
public:
    int age;
    int height;

    Human(const Human& other) {
        age = other.age;
        height = other.height;
    }
}

복사 생성자를 이용하면 해당 객체의 속성값은 동일하게 가지고 있지만,
서로 다른 메모리를 사용하고 있는 객체를 생성할 수 있습니다.
따라서 복사 생성자를 이용하면 객체를 복사할 수 있습니다.

2. 소멸자

소멸자는 객체의 수명이 끝났을 때 실행되는 함수 입니다.
객체가 사라질 때 직접 메모리를 해제해 줘야하는 속성을 관리할 때 유용합니다.

1
2
3
4
5
6
7
8
9
10
class Human {
public:
    int age;
    int height;
    int* pointer = new int;

    ~Human() {
        delete pointer;
    }
}

위와 같이 소멸자는 ~기호를 앞에 붙여 함수처럼 정의합니다.

This post is licensed under CC BY 4.0 by the author.