장비업체의 하급 비전개발자

C++ 함수 뒤에 const와 함수 앞에 const 의미 본문

C++ 공부

C++ 함수 뒤에 const와 함수 앞에 const 의미

진라면한사바리 2023. 3. 6. 19:19
const int func();
int func() const;

코드를 분석하던 중 두가지 const의 차이가 궁금하여서 찾아보았다.

 

const란 무엇인가?

데이터가 변경되지 않도록 상수화 를 하는것이다. 

 

예를 들어

const int a = 5; 
a = 10;  //error

const를 쓴 변수에 값을 바꾸려고하면 에러가 나온다.

 

위의 예시처럼 함수에 붙어진 것은 함수가 안바뀌는것이다(?)...

 

첫번째 예시처럼 반환형에 const가 붙은경우에는 특정 조건이 아니고는 의미가 없다고한다. 조건이라 함은 참조다.

const int func(int& nNum)
{
    int& nTemp = nNum;
    return nTemp;
}

void main()
{
   int a = 10;
   int b = func(a);
   b = 0; //상수화되었기 때문에 error
}

위와 같이 참조를 받아서 그 참조를 반환할 경우에만 의미가 있다고한다.

 

두번째 예시의 함수는 맴버변수를 바꾸지 않겠다는 의미라고한다.

 

class A
{
    int func() const;
    int m_nNum;
}

 

다음과 같이 func이 A클래스의 함수라고 하면, func함수 내에서는 m_nNum을 변경할 수 없다고한다!

 

코드의 안정성을 위해서는 잘 활용하면 좋을 것 같다.