본문 바로가기
프로그래밍/C++

멤버 이니셜 라이저(member initializer)

by 리뷰하는 (게임)프로그래머_리프TV 2010. 3. 23.




클래스 맴버 변수 안에 들어가 있는 const 변수를 초기화 하기 위해선 어떻게 해야 할까?

실제 const int n 이라는 변수를 초기화 하기 위해선.


const int n = 10;​


과 같이 해야 하지만
클래스에서

class AAA
{
	const int n = 10;
};


같은 선언 따위는 해줄 수 없다.
그렇다면 어떤 식으로 해주어야 하는가,
그렇다고 상수화 되어 있는 멤버 변수를 다음 처럼 접근 할 수도 없다.

#include <iostream>

class AAA
{
	const int n;
public:
	AAA( int n )
	{
		this->n = n; // 상수화 되어 있는 멤버 변수이기 때문에 접근이 불가능하다.
	}
};

void main()
{
	AAA a(10);
}​



그렇다면 어떻게 해 주어야 하는가.

#include <iostream>

class AAA
{
	const int n;
public:
	AAA( int _n ) : n(_n) 
	{
		std::cout << n << std::endl;
	}
};

void main()
{
	AAA a(10);
}​


처럼 하면 된다.
생성자안에 존재 하는 n을 _n으로 변경 하였지만,
: n(n) 이라고 해도 우리가 생각하는 대로 값이 변경 된다.
하지만 그렇게 보면 너무 모호성을 띄고 있는것 같아서.
인자 n을 _n으로 바꾼 것이고.

이처럼 클래스내부에 존재하는 const 변수를 초기화 하기 위해서는
멤버 이니셜 라이저 라는
: n(_n) 를 필요로 한다.

'프로그래밍 > C++' 카테고리의 다른 글

explicit, mutable  (0) 2010.03.24
static  (0) 2010.03.24
복사 생성자, 디폴트 생성자 그리고 디폴트 복사 생성자.  (0) 2010.03.21
friend  (0) 2010.03.21
this 포인터  (0) 2010.03.21