static_cast를 이용해서 형변환시 형에 관련하여 질문드립니다.
글쓴이: renboy / 작성시간: 목, 2017/06/15 - 4:49오후
안녕하세요.
현재 Effective c++로 공부중에 있습니다.
const 관련부를 공부하다가 비상수 객체를 상수 객체로 변경하는 부분인데요.
클래스명은 CMyString 입니다.
하나의 함수는 const char& operator[](int nIndex) const 이구요.
하나의 함수는 char& operator[](int nIndex) 입니다.
char& operator[](int nIndex) 함수 내에서
const char& operator[](int nIndex) const 함수를 호출하기 위해서
객체를 형변환 해주는데요.
그 부분이 (static_cast<const CMyString&>(*this))[0]; 입니다.
여기서 제가 궁금한 점은
형을 꼭 <const CMyString&>으로해줘야 하는 것인지 입니다.
제가 그냥 <const CMyString> 으로만 해서 이것 저것 테스트를 해보았으나
전혀 다른점을 못 찾겠거든요..
형을 <const CMyString&>으로 해준것과 <const CMyString>으로 한 것과 차이점이 궁금합니다.
바쁘신 와중에 수고스럽겠지만 답변 부탁드리겠습니다.
감사합니다.
Forums:
https://ideone.com/iMCVal
https://ideone.com/iMCVal
귀하와 같이 스스로 생각하고 탐구할 수 있는 지성이라면 예제 코드와 예시 출력 한 쌍으로 충분한 답이 되겠지요.
참고:
__PRETTY_FUNCTION__
는 gcc Extensions으로, 표준이 아닙니다.출력 편의상 사용했을 뿐이고 질문의 논점과 관계 없습니다.
https://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
답변 감사드립니다.
자세한 답변 감사드립니다.
아 참조형으로 캐스팅을 하지 않을 경우에는
without_ref_inst 객체의 whoami const가 아니라 임시 객체(?)의 whoami const가 호출되는 것이군요.
명쾌한 예시 너무나 감사드립니다!! 선생님.^^
댓글 달기