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

조회수 5035회

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)

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를 붙여주세요. !!!동료를 믿지 마세요!!!

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)