45행: 함수 내에서 배열에 저장된 데이터를 변경하지 못하도록 매개변수 형이 const로 선언되었다. 그리고 이는 매우 좋은 선언이라 할 수 있다. 그런데 문자는 이 선언으로 인해 49행이 원인이 되어 컴파일 에러가 발생한다는 것이다.

왜냐면, 인덱스 연산은 다음과 같이 해석이 되며, 

ref.operator[](idx); 이 때 호출되는 operator[]함수는 const 함수가 아니기 때문이다.


=> 문제 해결: operator[]함수에 const를 선언하면 문제를 해결할 수 있지만, 이렇게 되면 저장 자체가 불가능해진다. 또한 데이터를 저장하는 배열의 특성상 적절한 해결책이 아님을 알 수 있다.

따라서 const함수의 오버로딩을 통해 해결을 해야 한다. 


const 의 선언유무도 함수 오버로딩의 조건에 해당합니다.


위의 예제를 하나의 모델로 해서 const 기반의 함수 오버로딩이 유용하게 사용될 수 있음을 기억하자!

Posted by scii
: