#include 

using 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() 처럼 정확한 위치에 두세요.


Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
일상, 프로그래밍, IT 그리고 직장생활, Dive, 여행 by 지그프리드

카테고리

Class List (402)
Studies (30)
Exercise & Quizz (10)
Term Project (0)
ECIM list (Help!) (10)
Issues & News (0)
Gossip about IT & Job (22)
Tools (2)
Think about the Justice (23)
Book Review (170)
조엘 온 소프트웨어(번역) (28)
Diary (87)
Vacations (9)
Clash of clans 클래시 오브.. (11)

글 보관함

달력

«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Total : 315,600
Today : 2 Yesterday : 22