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 함수에서 값을 바꿀 수 있다.