클래스 맴버 변수 안에 들어가 있는 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 |