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처럼 레퍼런스값을 리턴시킨다면 상수 레퍼런스를 반환하여 상수 레퍼런스 변수에만 담을수 있으므로 값을 바꾸면 안되는 변수를 내보낼때 사용할수있다.
'언어 > C++' 카테고리의 다른 글
(C++)함수 호출 규약 (0) | 2020.07.13 |
---|---|
(C++)함수 포인터와 콜백함수 (0) | 2020.07.13 |
(C++)타입변환 연산자 오버로딩 (0) | 2020.07.02 |
(C++)연산자 오버로딩의 활용 (0) | 2020.06.29 |
(C++)VS에서 함수에서 지역변수의 레퍼런스값 리턴시 접근할수 있는 이유 (0) | 2020.06.29 |