함수 파라미터의 const는 어디까지 붙여줘야 할까요?


const를 얼마나 써야 하는 걸까요? 안 변하는 변수에는 다 써야 하는 걸까요? 한 줄짜리 코드에도??

void printValue(const bool b) { cout << b << endl; }

이렇게 쓰는 게 진짜 뭔가 도움이 되나요?? 저는 보통 const를 되게 많이 쓰는데, 요즘은 이거 왜 쓰지.. 이런 생각이 들어요

그리고 다른 사람이 짠 코드 중에서(밑의 소스코드같이) 함수 선언에는 const를 안 쓰고 정의에만 const 적어놓은 것도 있던데 왜 그러는 건가요?

소스코드

/*   .h file    */
void func(int n, long l);


/*   .cpp file    */
void func(const int n, const long l)
  • 2016년 01월 15일에 작성됨

조회수 249


1 답변


좋아요
0
싫어요
채택취소하기

선언에는 const 없이, 정의에만 const를 쓰는 이유는 const parameter가 그 함수 안에서만 const로 쓰이기 때문입니다.

즉,


void myPrint(const int a){
    cout << a << endl;
}

...

int val = 5;
myPrint(val)

과 같은 코드에서 valconst가 아니지만 val의 값을 복사받는 aconst라는 의미입니다. 포인터라면 다르겠지만, 보통 이런 상황에서는 const가 있고, 없고는 그렇게 큰 역할을 하지 않습니다.

그래도 별로 좋은 코드는 아니니까 쓰지 않는 게 좋아요

제 경우에는 레퍼런스나 포인터, 반복문의 iterator가 아니면 const는 잘 안 붙입니다. call by value에서는 값이 복사될 뿐 원본은 유지되니까요. const를 붙이는 게 더 안전하고 확실한 방법이겠지만 혼자쓰는 코드라면 저는 편한 대로 쓰는 게 좋다고 생각해요

여러 명이서 작업하는 경우엔 꼭 const를 붙여주세요. !!!동료를 믿지 마세요!!!

  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close