explicit

c++에서 클래스를 인자로 받는 함수를 사용할 경우, 그 클래스의 생성자에 해당하는 자료형만을 함수에 인자값에 넣으면 컴파일러가 알아서 클래스를 생성하여 함수를 실행한다.(암시적 변환) 하지만 이런 암시적 변환으로 의도하지 않은 결과가 나오기도 하는데, 이를 방지하기 위해 생성자의 암시적 변환을 방지하는 키워드가 'explicit'이다. explicit는 또한 생성자가 복사 생성자의 형태로 호출되는 것도 막아준다.

explicit:명백한, 명시적

mutable

멤버 변수를 mutable로 선언하면 const함수에서도 값을 바꿀 수 있다. 기본적으로는 const함수 처럼 동작해야 하지만 특별한 상황에서 중간 데이터를 저장해야 하는 경우 유용하다.(캐시 데이터 등)