프로그래밍을 처음 짜기 시작할 때 "초기화를 꼭 해야 된다." "초기화는 중요한 것이다." 등의 말을
많이 들어 보셨을 것입니다.
근데 프로그래밍을 하면서 프로그래머는 분명 초기화를 했다고 하지만 그 초기화가
초기화를 하는 것이 아닌 대입이 될 수도 있기 때문에 이번에 초기화와 대입에 대해서 보다 확실히
알아 보기 위해 간단히 글을 적어 봅니다.
일단
밑의 소스를 보겠습니다.
A.
B.
A 소스와 B소스를 보게 되면 쉽게 알 수 있을 것입니다.
A 소스는 초기화를 시킨 것이고 , B 소스는 대입을 시킨 것이라는 것을 쉽게 알 수 있는데,
그럼 C++언어에서의 클래스를 예로 설명을 들어 보겠습니다.
위 소스에서 생성자함수 안에서 value 값을 0으로 주었습니다.
그럼 value 값이 초기화가 된 것일까요!?
결론 부터 말하자면 초기화가 아닌 대입이 되었다는 것입니다.
못 믿으시겠다면, 변수에 const 키워드를 붙여 보세요.
상수는 초기화 될때만 값을 지정 할 수 있으니,
생성자 함수 안에서 0으로 주어졌는 것이 초기화라면, 값이 들어 가겠죠!?
그럼 클래스에서의 초기화는 어떻게 시키는 것일까요!?
바로 콜론 키워드를 사용하면 됩니다.
소스를 보면,
위 소스를 보면, 생성자 함수 옆에 콜론(:)으로 해서 값을 입력 시키는 것을 볼 수 있을 것입니다.
이런 식으로 작성을 하게 되면,
대입이 아닌 초기화가 일어 나게 됩니다.
그리고 소스를 보면 const 키워드로 작성된 상수에서도
값이 들어가도록 한 것을 볼 수 있습니다.
이 동작이 에러 없이 잘 입력이 된다면,
초기화가 된다는 것을 알 수 있겠죠!?
직접 작성하셔서 보시면 값이 입력 된다는 것을 알 수 있습니다.
이렇게 클래스에서 초기화는 생성자 함수 안에서 이루어 지는 것이 아니라
콜론(:) 키워드를 사용하여 이루어 진다는 것을 알 수 있습니다.
그래서 보통 변수에서는 생성자 함수 안에서 대입으로 값을 넣더라도
상수변수는 꼭 콜론(:) 키워드를 사용해야 됩니다.
많이 들어 보셨을 것입니다.
근데 프로그래밍을 하면서 프로그래머는 분명 초기화를 했다고 하지만 그 초기화가
초기화를 하는 것이 아닌 대입이 될 수도 있기 때문에 이번에 초기화와 대입에 대해서 보다 확실히
알아 보기 위해 간단히 글을 적어 봅니다.
일단
밑의 소스를 보겠습니다.
A.
int value = 10;
B.
int value; value = 10;
A 소스와 B소스를 보게 되면 쉽게 알 수 있을 것입니다.
A 소스는 초기화를 시킨 것이고 , B 소스는 대입을 시킨 것이라는 것을 쉽게 알 수 있는데,
그럼 C++언어에서의 클래스를 예로 설명을 들어 보겠습니다.
class Test { private: int value; public: Test() { this->value =0; } };
위 소스에서 생성자함수 안에서 value 값을 0으로 주었습니다.
그럼 value 값이 초기화가 된 것일까요!?
결론 부터 말하자면 초기화가 아닌 대입이 되었다는 것입니다.
못 믿으시겠다면, 변수에 const 키워드를 붙여 보세요.
상수는 초기화 될때만 값을 지정 할 수 있으니,
생성자 함수 안에서 0으로 주어졌는 것이 초기화라면, 값이 들어 가겠죠!?
그럼 클래스에서의 초기화는 어떻게 시키는 것일까요!?
바로 콜론 키워드를 사용하면 됩니다.
소스를 보면,
class Test { private: int value; const int value2; public: Test() : value(1), value2(2) { } };
위 소스를 보면, 생성자 함수 옆에 콜론(:)으로 해서 값을 입력 시키는 것을 볼 수 있을 것입니다.
이런 식으로 작성을 하게 되면,
대입이 아닌 초기화가 일어 나게 됩니다.
그리고 소스를 보면 const 키워드로 작성된 상수에서도
값이 들어가도록 한 것을 볼 수 있습니다.
이 동작이 에러 없이 잘 입력이 된다면,
초기화가 된다는 것을 알 수 있겠죠!?
직접 작성하셔서 보시면 값이 입력 된다는 것을 알 수 있습니다.
이렇게 클래스에서 초기화는 생성자 함수 안에서 이루어 지는 것이 아니라
콜론(:) 키워드를 사용하여 이루어 진다는 것을 알 수 있습니다.
그래서 보통 변수에서는 생성자 함수 안에서 대입으로 값을 넣더라도
상수변수는 꼭 콜론(:) 키워드를 사용해야 됩니다.
'C++ Language > Tip / Information' 카테고리의 다른 글
auto_ptr 키워드 (0) | 2010.02.18 |
---|---|
8진수 / 10진수 / 16진수 출력하기 (0) | 2010.02.16 |
const_cast 키워드 (0) | 2010.02.12 |
mutable 키워드 (0) | 2010.02.12 |
상수함수란?! (0) | 2010.02.12 |