Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 생성자 완벽 이해하기: 기본 생성자부터 매개변수 생성자까지

C++ 프로그래밍에서 생성자(Constructor)는 클래스의 특수한 멤버 함수로, 객체가 생성되는 순간 자동으로 호출되어 해당 객체를 초기화하는 역할을 합니다. 이번 튜토리얼에서는 C++ 생성자의 개념과 종류를 예제 코드를 통해 자세히 살펴보겠습니다.

생성자는 다음과 같은 특징을 가집니다.

  • 클래스 이름과 동일한 이름을 가집니다.
  • 반환 타입이 없습니다(void조차 아님).
  • 객체 인스턴스가 생성될 때 자동으로 호출됩니다.

기본 생성자(Default Constructor)

기본 생성자는 매개변수를 받지 않는 생성자로, 프로그래머가 직접 정의하지 않으면 컴파일러가 암묵적으로 만들어 줍니다. 아래 예제는 기본 생성자를 사용해 멤버 변수를 초기화하는 방법을 보여줍니다.

예제

#include <iostream>
using namespace std;
class construct {
    public:
    int a, b;
    //기본 생성자
    construct(){
        a = 10;
        b = 20;
    }
};
int main(){
    construct c;
    cout << "a: " << c.a << endl
    << "b: " << c.b;
    return 1;
}

출력 결과

a: 10
b: 20

위 코드에서 construct() 생성자는 객체 c가 선언되는 즉시 실행되어 멤버 변수 ab를 각각 10과 20으로 초기화합니다. 덕분에 별도의 초기화 과정 없이도 안전하게 값을 사용할 수 있습니다.

매개변수 생성자(Parameterized Constructor)

매개변수 생성자는 인자를 전달받아 멤버 변수를 원하는 값으로 초기화할 수 있는 생성자입니다. 객체마다 서로 다른 초기값을 설정해야 할 때 특히 유용합니다.

예제

#include <iostream>
using namespace std;
class Point {
    private:
    int x, y;
    public:
    Point(int x1, int y1){
        x = x1;
        y = y1;
    }
    int getX(){
        return x;
    }
    int getY(){
        return y;
    }
};
int main(){
    Point p1(10, 15);
    cout << "p1.x = " << p1.getX() << ", p1.y = " <<
    p1.getY();
    return 0;
}

출력 결과

p1.x = 10, p1.y = 15

Point p1(10, 15); 문장이 실행되면 매개변수 생성자가 호출되어 좌표 x에는 10, y에는 15가 저장됩니다. 이후 접근자(getter) 함수인 getX()getY()를 통해 저장된 값을 확인할 수 있습니다.

정리

생성자는 C++ 객체 지향 프로그래밍에서 객체의 안전하고 일관된 초기화를 보장하는 핵심 요소입니다. 기본 생성자는 별도의 입력 없이 고정된 초기값을 설정할 때, 매개변수 생성자는 객체별로 다른 값을 지정할 때 활용하면 좋습니다. 두 생성자를 상황에 맞게 적절히 사용하면 더욱 견고하고 유연한 코드를 작성할 수 있습니다.