모두의 코드 커뮤니티

C++로 이진탐색트리를 공부하던중 const인데도 값을 바꿀수 있어서 질문드립니다

원래는 const를 붙이지 않아야 하는데 모르고 붙였는데도 제대로 작동이 되서
제가 const를 제대로 이해하지 못한거같아서 질문 드립니다.

    const iterator& operator++()
    {
        m_pNode = m_pBST->GetInOrderSuccessor(m_pNode);
        return *this;
    }

const iterator&이기때문에 이터레이터의 맴버인 노드주소값을 바꿀수 없어야 하는것 아닌가요?
그런데도 GetInOrderSuccessor()함수를 통해 주소를변경 하는게 가능했습니다.
불가능해야 하는걸로 알고있는데 제대로 동작이 되었습니다.
왜그런지 알수 있을까요? 개발환경은 Mac에서 VS Code를 사용하였습니다.

타입이 const iterator& 인 값을 반환하는 것입니다.
const iterator& operator++() const { ... }
이렇게 const 를 뒤에 넣어줘야 값 변경이 불가해요.

정말정말 감사합니다^^

좋아요 1