C++ 프로그래밍/클래스
멤버 초기화 리스트
같은편
2022. 7. 25. 17:26
생성자의 가장 큰 특징 중 하나인 멤버 초기화 리스트(member initialization list)는 생성자 함수 헤더와 함수 몸체 사이에 :를 넣고 클래스의 멤버 변수와 매개변수를 "멤버(매개변수)"의 형태로 나열하는 것입니다.
class Complex
{
double real, imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
};
void main()
{
Complex a(2.0, 4.0); //객체 초기화
}
여기서 real(r)은 real = r과 똑같이 동작합니다.
이제 함수 블록에 멤버의 초기화 코드를 적을 필요가 없게 됩니다.
이 방법은 얼핏 보면 초기화 방법의 변경에 지나지 않는 것이라고 보이지만 사실 매우 중요한 용도가 있습니다.
다음과 같이 무조건 멤버 초기화 리스트를 사용해야만 하는 상황이 있습니다.
- 클래스의 상수 멤버나 참조자 멤버를 초기화하기 위해 (C++11 이후 버전에서는 그냥 선언 및 초기화가 가능하다)
- 다른 클래스의 객체를 멤버로 갖는 경우 이들을 초기화하기 위해
- 상속 관계에서 부모 클래스의 생성자를 이용하기 위해
두 번째와 세 번째 용도가 매우 중요합니다.