#includeusing namespace std; class CObj { private: const int m_iValue; const short m_sValue; int m_iTest; public: int* GetTest(void) const //1번 함수 { return &m_iTest; } int* const GetTest2(void) { return &m_iTest; // 2번 함수 } }; int main(void) { return 0; }
1번 함수는 왜 오류가 나는 건가요?? 그리고 nt* const GetTest(void) 이렇게도 되는데
이건 무슨 의미 인가요???
Const 선언의 위치는 알아보기 쉽게 맨 앞으로 해주세요 |
1. int* GetTest(void) const
이게 별로 좋은 선언 방법은 아닙니다 (엄밀히는 틀렸습니다.) Visual Studio 2015 컴파일러는 다행히 이것을
const int* GetTest(void) 와 동일하게 처리해주고 있습니다.
따라서, GetTest() 함수의 return 값으로 const int* 를 기대했는데, 보통의 int* 가 리턴이 되니까 컴파일 에러가 나는 겁니다.
2. Test 2도 마찬가집니다. 가운데에 const가 들어간 경우에도 const int* GetTest(void) 와 동일하게 처리합니다.
이 내용은 제가 참고한 설명 링크에도 const의 위치에 따른 두가지 경우를 동일하게 언급이 있습니다.
헛갈리게 짜는 건 무조건 잘못된 일입니다. const는 GetTest2() 처럼 정확한 위치에 두세요.
'ECIM list (Help!)' 카테고리의 다른 글
C언어 포인터 - 문자열을 다룰 때 이중 포인터를 쓰는 이유 (0) | 2015.09.05 |
---|---|
c언어 메모리동적할당 문제 Memory Allocation Malloc (0) | 2015.09.04 |
두 정수의 최대공약수 구하기 - 디버깅 (0) | 2015.09.03 |
C언어 재귀함수로 삼각형 그리기 - 재귀함수 연습 (0) | 2015.08.30 |
피보나치 수열 비재귀방법으로 풀기 - Fibonacci number without recursion (0) | 2015.08.30 |