위치에 따른 const 의미를 정리해 보았습니다.
/** * @brief **/ class ConstPositionTest { public: //> (const char*) msg : char* 가 const, 즉 msg 가 가리키는 데이터 변경 불가 char* Function1(const char* msg) { msg[0] = 't'; // error return m_msg; } //> char* (const msg) : msg 변수가 const, 즉 msg 포인터 변수 변경 불가 char* Function2(char* const msg) { msg = m_msg; //error return m_msg; } //> 메소드 상수화, 이 메소드는 클래스 멤버를 읽을 수는 있으나 변경 할 수는 없음 char* Function3(char* msg) const { m_msg = msg; //error return m_msg; } //> (const char*) : 리턴 값이 const char* 이므로 리턴 받는 변수도 const char* 이어야 함 //> 따라서 리턴되는 포인터가 가리키는 데이터 변경 불가 const char* Function4(char* msg) { m_msg = msg; return m_msg; //반환 받는 타입이 const가 아닐 경우 error } private: char* m_msg; }; /** * @brief * @param * @see * @remarks * @code * @endcode * @return **/ bool test_const_position() { ConstPositionTest test; char msg[] = "hello, const!"; test.Function1(msg); test.Function2(msg); test.Function3(msg); const char* pMessage = test.Function4(msg); pMessage[0] = 0; // error }
댓글 없음:
댓글 쓰기