71. C++ 구조체 멤버 초기화
1. 개요
1.1 문서 개요
이 문서는 C++에서 구조체(struct
) 멤버를 초기화하는 다양한 방법에 대해 정리합니다. 구조체 초기화 방식은 C++ 표준의 발전과 함께 다양해졌으며, 초기화 리스트, 생성자, 중괄호 초기화 등 다양한 형태가 존재합니다.
2. 내용
2.1 중괄호 초기화 방식
2.1.1 C++11 이후의 uniform initialization
다음과 같은 방식으로 구조체를 초기화할 수 있습니다.
struct Point {
int x;
int y;
};
Point p1 = {10, 20};
Point p2{30, 40};
두 가지 방식 모두 중괄호를 이용한 초기화이며, C++11 이후에는 p2{}
형태도 허용됩니다.
2.2 멤버별 기본값 초기화
C++11부터 구조체 내부에서 멤버 변수에 기본값을 줄 수 있습니다.
struct Point {
int x = 0;
int y = 0;
};
이렇게 정의된 구조체는 인스턴스를 생성할 때 명시적으로 값을 전달하지 않아도 기본값이 적용됩니다.
2.3 사용자 정의 생성자 사용
2.3.1 구조체 생성자
구조체도 생성자를 가질 수 있습니다.
struct Point {
int x, y;
Point(int a, int b) : x(a), y(b) {}
};
이 생성자를 통해 다음과 같이 초기화할 수 있습니다.
Point p(5, 15);
3. 마무리
C++에서는 구조체 멤버를 다양한 방식으로 초기화할 수 있으며, C++11 이후부터는 더욱 유연한 초기화 구문이 제공됩니다. 중괄호 초기화, 기본값, 사용자 정의 생성자를 적절히 활용함으로써 코드의 명확성과 안정성을 높일 수 있습니다.