본문 바로가기

카테고리 없음

const

안녕하세요 

오랜만에 이렇게 블로그를 쓰게 되었네요 ㅎㅎ

오늘 알아볼 것은 const입니다.

 

const란?

변수에 const라는 키워드를 사용하여 상수(constant)의 의미를

갖게 하여 그 내용을 변경할 수 없게 합니다.

 

여기서 제가 생각하는 핵심 문장은 '그 내용을 변경할 수 없게 한다' 입니다.

 

 

예를 하나 들겠습니다.

처음 소스를 작성했을 때 저는 int x의 값을 1로 지정을 하였습니다.

 

하지만 만약에 x의 값을 바꾸고 싶을 경우 x=3; 으로 소스를 작성하여

x의 값을 변경할 수 있었는데요 (아래 사진 참고)

 

만약에 이 소스에 const변수를 사용하면 어떻게 될까요? 

 

int x = 1; 이라는 식에 cosnt변수를 사용하였습니다. 

 

그랬더니 방금까지 잘 돌아가던 소스가 에러가 났습니다.

참 신기하죠?

이번에는 에러가 난 x = 3;의 식을 지워보도록 하겠습니다.

 

int = 3을 지웠더니 다시 소스가 정상적으로 작동이 되는것을 보실 수 있습니다.

 

이처럼 앞서 말한것과 같이 변수에 'const'라는 키워드를 사용하면, 상수를 갖게 하여 

그 내용을 변경할 수 없게 되는 것입니다. 

 

즉, const int x = 1; 은 변수 x는 항상 초기값 1을 가지게되며, 변경은 불가 하다는 것입니다.

(const를 사용할때는 반드시 초기값이 필요합니다.)

 

const int x = 1; 이 아닌 int const x =1;과 같은 방식으로

사용할 수 있기는 하지만 별로 추천드리지는 않겠습니다.

 

const는 함수에도 사용할 수 있는데요, 

만약 const를 함수에 사용한다면 (함수, 매개변수, 리턴형에 const를 선언) 읽기 전용임을

나타냅니다.

 

ex ) void happy(const int);

// 매개 변수가 const

 

const double happy(int);

//리턴 값이 const, reference(&)를 리턴하는 경우

 

void happy(void) const;

// 함수가 const, 멤버 변수를 변경하지 않는 함수

 

const로 지정된 함수 또한 멤버변수의 값을 변경할 수 없습니다.

(즉, 읽기 전용 함수 (get으로 시작하는 함수)가 됩니다.)

 

 멤버 변수의 경우에는 const를 형 앞에

ex ) const int name;

멤버 함수의 경우에는 괄호 다음에 사용해줍니다.

int getName() const;

 

const는 객체에도 사용할 수 있는데요, 객체에 const를 사용하게 된다면

해당 객체에 초기화 된 데이터는 변경 할 수 없으며 const로 지정된 멤버 함수만 호출이 가능합니다. 

 

const Cat happy;

- const 객체 happy, happy의 초기화 된 데이터는 변경할 수 없습니다. 

 

오늘은 이렇게 const에 대하여 알아보았습니다.

제가 생각하는 const의 핵심 문장 '변경할 수 없다'라는 핵심은

오늘 머릿속에 꼭 기억하고 가져가셨으면 좋겠습니다! 

 

 

 

C++프로그래밍(21-2학기)한성현교수 강의 내용 변형 및 요약