본문 바로가기
언어/C++

(C++)함수에서의 const 사용

by 흥부와놀자 2020. 6. 29.

C++에서 자주 사용하는 키워드인 const. 함수에서는 어떤 경우에 사용하는지 알아보자.

 

1. 함수 선언 시 뒤에 붙은 const 

class Test
{
	int k;
    void NonConstFunc()
    {
    	k=3;
    }
	void Func() const
	{
		//k=3 -> 에러발생
        //NonConstFunc() -> 에러발생
        
	};
};

함수 뒤에 붙은 const는 해당 함수가 속해있는 클래스의 멤버변수를 바꾸지 않겠다는 의미이다. 또한 멤버변수를 바꾸는 또다른 함수를 호출하는것 또한 막아놓았다.

 

2. 함수 선언시 앞에 붙은 const

class Test
{
	int k;
public:
	Test();
	const int Func()
	{
		k = 3;
		return k;

	};
	const int& RefFunc(int a)
	{
		int& A = a;
		return A;
	}
};
int main()
{
	Test t;
	int k = 1;
	const int& j = t.RefFunc(k);
	//int& J = t.RefFunc(k); 에러발생
}

함수 앞에 붙은 const는 함수의 리턴값을 상수화 시키겠다는 의미이다. 레퍼런스가 아닌 변수를 리턴시킬때는 다른 변수에 대입할때 값이 복사되므로 딱히 의미가 없다.

만약 위의 RefFunc처럼 레퍼런스값을 리턴시킨다면 상수 레퍼런스를 반환하여 상수 레퍼런스 변수에만 담을수 있으므로 값을 바꾸면 안되는 변수를 내보낼때 사용할수있다.