C++/개인메모

const, mutable

K.DJ 2022. 9. 1. 13:45

const

 

constant위 약자로 사전적 의미는 '상수'를 뜻한다.

C++에서 const 키워드는 해당 대상을 변경하지 않는 '상수'로 판단한다는 뜻.

 

 

- const 비멤버 변수

두 선언은 동일하며, num은 const int로 변하지 못하는 상수가 되어서 num을 변경하려고 하면 에러가 발생.

 

 

- const 멤버 변수

const 키워드를 사용할때는 반드시 초기화를 해주어야 한다. 멤버 변수를 const로 선언할때는 아예 선언과 동시에 초기화를 해주거나, 초기화 리스트를 사용하여야 한다.

C 클래스는 const int인 num을 선언한 뒤 이후 생성자에서 num을 변경하려고 하였으므로 에러가 발생한다.

 

 

- const 포인터 변수

기존 const 변수 선언법과 다르게 const 포인터 변수는 const의 위치에 따라 const화 되는 변수가 달라진다.

const가 포인터 변수 앞에 있을때: 해당 포인터가 가르키는 값을 const화.

const가 포인터 변수 뒤에 있을때: 해당 포인터 자체를 const화.

 

 

- const 멤버 함수

멤버 함수를 const화 하면 해당 멤버 함수 내에서는 모든 멤버 변수를 const화 하였다고 판단하게 된다. 해당 멤버변수 내에선 어떠한 멤버 변수도 변경할 수 없다.(지역 변수는 가능)


mutable

 

사전적 의미로 '변이 가능한'이라는 뜻

mutable로 선언된 변수는 const 함수에서 값을 바꿀 수 있다.