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과 똑같이 동작합니다.

이제 함수 블록에 멤버의 초기화 코드를 적을 필요가 없게 됩니다.

 

이 방법은 얼핏 보면 초기화 방법의 변경에 지나지 않는 것이라고 보이지만 사실 매우 중요한 용도가 있습니다.

다음과 같이 무조건 멤버 초기화 리스트를 사용해야만 하는 상황이 있습니다.

두 번째와 세 번째 용도가 매우 중요합니다.