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가 선언되는 즉시 실행되어 멤버 변수 a와 b를 각각 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++ 객체 지향 프로그래밍에서 객체의 안전하고 일관된 초기화를 보장하는 핵심 요소입니다. 기본 생성자는 별도의 입력 없이 고정된 초기값을 설정할 때, 매개변수 생성자는 객체별로 다른 값을 지정할 때 활용하면 좋습니다. 두 생성자를 상황에 맞게 적절히 사용하면 더욱 견고하고 유연한 코드를 작성할 수 있습니다.