-
get 함수를 const로 해야 하는 이유개발/C·C++ 2022. 1. 4. 22:16
객체를 만약 const로 선언한다면 초기화 이후에 내부 데이터를 변경하지 않겠다는 의미입니다. 데이터는 변경할 수 없어도 외부에서 값이 필요할 수는 있습니다. 하지만 get 함수에 const를 붙이지 않는다면 const 객체는 get 함수를 호출할 수 없습니다.
함수를 호출할 때 암시적으로 this 포인터가 전달되므로 const 객체는 const this가 전달됩니다. 이 때 함수가 const가 아니라면 const 포인터는 일반 포인터가 가리킬 수 없기 때문에 함수를 호출할 수가 없는 상황이 됩니다. 다음 그림을 보면 선언되어 있는 getName 함수에 접근하지 못함을 알 수 있습니다.
상수 객체를 생성해야 하는 이유가 있을 텐데 get 함수를 호출하지 못해 상수 객체를 만들지 못하는 상황은 없어야 할 것입니다. 때문에 멤버 변수를 변경하지 않는 함수라면 const로 선언하는 편이 좋습니다.
'개발 > C·C++' 카테고리의 다른 글
noexcept (0) 2022.01.06 객체 생성 시 const의 위치 차이 (0) 2022.01.04 알아두면 좋을 개념 (0) 2022.01.03 복사 생성자와 이동 생성자 (0) 2021.12.27 객체 생성 시 함수 호출 순서 (0) 2021.12.27