생성자(Constructor)는 클래스의 새로운 객체가 생성되는 순간 자동으로 실행되는 특수한 멤버 함수입니다. 생성자는 클래스와 동일한 이름을 가지며, 일반 함수와 달리 반환 타입이 없습니다(void조차 사용할 수 없습니다). 생성자는 주로 클래스의 멤버 변수에 초기값을 설정하는 용도로 활용됩니다.
C++의 생성자는 크게 두 가지 유형으로 나눌 수 있습니다.
- 기본 생성자(Default Constructor): 매개변수를 받지 않는 생성자
- 매개변수 생성자(Parameterized Constructor): 매개변수를 통해 값을 전달받는 생성자
기본 생성자의 동작 방식
기본 생성자는 어떤 매개변수도 받지 않습니다. 만약 프로그래머가 기본 생성자를 명시적으로 정의하지 않으면, 컴파일러가 암시적(implicit) 기본 생성자를 자동으로 제공합니다. 다만 이 경우 멤버 변수가 의도한 값으로 초기화되지 않을 수 있으므로, 원하는 초기값을 보장하려면 기본 생성자를 직접 작성하는 것이 좋습니다.
다음은 기본 생성자의 동작을 보여주는 예제입니다.
예제 코드
#include <iostream>
using namespace std;
class DemoDC {
private:
int num1, num2 ;
public:
DemoDC() {
num1 = 10;
num2 = 20;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};
int main() {
DemoDC obj;
obj.display();
return 0;
}
실행 결과
num1 = 10
num2 = 20
코드 설명
위 프로그램에서 DemoDC 클래스는 기본 생성자를 포함하고 있으며, 이 생성자는 객체가 생성되는 즉시 num1을 10으로, num2를 20으로 초기화합니다. 또한 display() 함수는 두 멤버 변수의 값을 화면에 출력하는 역할을 담당합니다. 해당 코드는 아래와 같습니다.
class DemoDC {
private:
int num1, num2
public:
DemoDC() {
num1 = 10;
num2 = 20;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};main() 함수에서는 DemoDC 타입의 객체 obj를 정의합니다. 이 문장이 실행되는 순간 기본 생성자가 자동으로 호출되어 멤버 변수들이 초기화됩니다. 이후 display() 함수를 호출하면 초기화된 값이 출력됩니다.
DemoDC obj;
obj.display();