const 함수를 이용한 오버로딩의 활용
Programming/C++ 2012. 9. 21. 14:52 |45행: 함수 내에서 배열에 저장된 데이터를 변경하지 못하도록 매개변수 형이 const로 선언되었다. 그리고 이는 매우 좋은 선언이라 할 수 있다. 그런데 문자는 이 선언으로 인해 49행이 원인이 되어 컴파일 에러가 발생한다는 것이다.
왜냐면, 인덱스 연산은 다음과 같이 해석이 되며,
ref.operator[](idx); 이 때 호출되는 operator[]함수는 const 함수가 아니기 때문이다.
=> 문제 해결: operator[]함수에 const를 선언하면 문제를 해결할 수 있지만, 이렇게 되면 저장 자체가 불가능해진다. 또한 데이터를 저장하는 배열의 특성상 적절한 해결책이 아님을 알 수 있다.
따라서 const함수의 오버로딩을 통해 해결을 해야 한다.
const 의 선언유무도 함수 오버로딩의 조건에 해당합니다.
위의 예제를 하나의 모델로 해서 const 기반의 함수 오버로딩이 유용하게 사용될 수 있음을 기억하자!
'Programming > C++' 카테고리의 다른 글
2차원 배열처럼 동작하는 객체 (0) | 2012.09.27 |
---|---|
객체의 저장을 위한 배열 클래스의 정의 (0) | 2012.09.26 |
배열의 인덱스 연산자 오버로딩 (0) | 2012.09.20 |
이니셜라이저의 성능 향상에 대하여 (0) | 2012.09.20 |
상속 구조에서의 대입 연산자 호출 (0) | 2012.09.13 |