본문 바로가기
IT/c++

C++ 생성자와 소멸자: 객체 지향 프로그래밍의 시작과 끝

by 뉴코딩맨 2023. 8. 2.
C++은 객체 지향 프로그래밍 언어로, 생성자와 소멸자는 객체의 생성과 소멸을 담당하는 중요한 멤버 함수입니다. 생성자는 객체가 생성될 때 자동으로 호출되며, 소멸자는 객체가 소멸될 때 호출됩니다. 이 글에서는 C++에서 생성자와 소멸자의 역할과 사용 방법에 대해 알아보겠습니다.

 

 

1. 생성자와 소멸자란 무엇인가?

생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 특별한 멤버 함수입니다. 객체가 생성되는 시점에서 멤버 변수를 초기화하거나 다른 초기화 작업을 수행하는 역할을 합니다. 소멸자(Destructor)는 객체가 소멸될 때 자동으로 호출되는 특별한 멤버 함수로, 객체가 소멸되는 시점에서 할당된 메모리를 해제하거나 필요한 정리 작업을 수행합니다.
 

2. 생성자의 역할

생성자는 다음과 같은 역할을 수행합니다.
  • 객체의 초기화: 객체가 생성될 때 멤버 변수를 초기화하여 안정적인 상태로 시작할 수 있습니다.
  • 메모리 할당: 객체가 생성되는 시점에 필요한 메모리를 할당합니다.

 

3. 소멸자의 역할

소멸자는 다음과 같은 역할을 수행합니다.
  • 메모리 해제: 객체가 소멸될 때 할당된 메모리를 해제하여 불필요한 메모리 누수를 방지합니다.
  • 정리 작업: 객체가 소멸되는 시점에 필요한 정리 작업을 수행하여 리소스를 확보합니다.

 

 

4. 생성자와 소멸자의 사용 방법

C++에서 생성자는 클래스의 이름과 동일하며, 반환 타입을 가지지 않습니다. 생성자는 객체가 생성될 때 자동으로 호출되므로, 명시적으로 호출하지 않아도 됩니다. 소멸자는 클래스 이름 앞에 ~ 기호를 붙여서 정의합니다. 소멸자 또한 명시적으로 호출하지 않으며, 객체가 소멸될 때 자동으로 호출됩니다.
 
class MyClass {
public:
    // 생성자
    MyClass() {
        // 초기화 작업
    }

    // 소멸자
    ~MyClass() {
        // 정리 작업
    }
};

 

5. 생성자와 소멸자를 활용한 예제

다음은 생성자와 소멸자를 활용하여 간단한 클래스를 구현하는 예제입니다:

 

#include <iostream>
using namespace std;

class Rectangle {
private:
    int width;
    int height;

public:
    // 생성자
    Rectangle(int w, int h) {
        width = w;
        height = h;
        cout << "Rectangle 객체 생성" << endl;
    }

    // 소멸자
    ~Rectangle() {
        cout << "Rectangle 객체 소멸" << endl;
    }

    int getArea() {
        return width * height;
    }
};

int main() {
    // 객체 생성: 생성자 호출
    Rectangle r(5, 3);

    // 면적 출력
    cout << "사각형의 면적: " << r.getArea() << endl;

    // 객체 소멸: 소멸자 호출
    return 0;
}

 

6. 결론

이 글에서는 C++의 생성자와 소멸자에 대해 알아보았습니다. 생성자와 소멸자는 객체의 초기화와 정리에 중요한 역할을 담당합니다. 제대로 활용하면 객체 지향 프로그래밍의 강력한 기능을 사용할 수 있습니다.
 

댓글