[완료] c++ 문법 질문 : const 함수 오버로딩 관련

syayiyip의 이미지

#include <stdio.h>
 
 
class A {
 
public:
 
	void p() {
		printf("10\n");
	}
 
	void p() const {
		printf("20\n");
	}
 
};
 
 
int main(void)
{
	A a;
	A const b;
	a.p();
	b.p();
 
	return 0;
}

실행결과는 아래와 같습니다.
------
10
20
------
보시다시피 오버로딩 규칙에 의해 a 는 const 가 아니라서 p 호출시 10이 출력되고 b 는 const 로 선언되어서 p 호출시 20이 출력됩니다.
이처럼, const 로 선언 되었느냐의 여부에 따라서 두 개의 오버로딩된 함수 p 가 각각 다르게 호출되는데요.
const 가 아닌 a 에서 const로 선언된 함수 p() 를 호출하는 방법이 있나요?

익명 사용자의 이미지

http://codepad.org/xxsrpnOe
위처럼 뭔가로 감쌀수도 있고
프록시객체로 해결볼수도 있습니다.
effective c++이였는지 more effective c++이엿는지에 친절하게 설명됬던 사례로 기역나네요

winner의 이미지

이럴 때 casting 하면 되죠. 아니면 const 참조를...

syayiyip의 이미지

감사합니다. 두 분 덕에 의문점이 해결되었습니다.