C++ 생성자를 이용한 동적 초기화 마스터하기
생성자를 이용한 동적 초기화
C++에서 동적 초기화(Dynamic Initialization)는 생성자를 사용해 변수나 객체를 런타임에 초기화하는 과정입니다.
생성자는 객체 생성에 중요한 역할을 하며, 클래스의 정적 및 동적 데이터 멤버 모두를 초기화하는 데 사용될 수 있습니다.
객체 생성 시 생성자가 호출되고, 생성자가 데이터 멤버를 값으로 초기화하는 로직을 포함하면 이를 동적 초기화라고 합니다. 이는 값이 런타임에 계산, 검색, 결정되므로 정적 초기화보다 더 유연합니다.
문법
ClassName* objectName = new ClassName(constructor_arguments);
- ClassName: 클래스 타입
- objectName: 객체 포인터
- constructor_arguments: 생성자에 전달할 인자들
동적 초기화 예제
#include <iostream>
using namespace std;
class Rectangle {
public:
int width, height;
// width, height 초기화 생성자
Rectangle(int w, int h) : width(w), height(h) {}
void display() {
cout << "Width: " << width << ", Height: " << height << endl;
}
};
int main() {
// 생성자를 사용해 Rectangle 객체 동적 생성
Rectangle* rect = new Rectangle(10, 5);
// 값 출력
rect->display();
// 메모리 해제
delete rect;
return 0;
}
출력
Width: 10, Height: 5
설명
- `new Rectangle(10, 5)`가 width 10, height 5인 Rectangle 객체를 생성자로 동적 생성
- `rect->display()`로 직사각형 치수 출력
- `delete rect;`로 Rectangle 객체 메모리 해제
왜 생성자로 동적 초기화를 하는가?
- 런타임에만 알 수 있는 값으로 초기화 가능
- 객체 생성과 초기화 로직 단순화
- 초기화와 검증을 단일 단계에서 결합
C++에서 생성자를 사용한 동적 초기화는 값이 런타임에 결정되는 객체 생성을 훨씬 쉽게 만듭니다. 초기화 로직을 생성자 내에 캡슐화하면 코드가 깔끔하고 효율적이며 유지보수하기 쉬워집니다. 객체 초기화가 런타임 데이터에 의존할 때마다 사용하세요.