code

값으로 전달할 때 "const"가 중복되지 않습니까?

codestyles 2020. 10. 21. 08:08
반응형

값으로 전달할 때 "const"가 중복되지 않습니까?


이 질문에 이미 답변이 있습니다.

큐브의 부피를 계산하는 함수를 발견했을 때 C ++ 책 (Deitel)을 읽고있었습니다. 코드는 다음과 같습니다.

double cube (const double side){
    return side * side * side;
}

"const"한정자를 사용하는 것에 대한 설명은 다음과 같습니다. "const 한정은 최소 권한 원칙을 적용하는 데 사용되어야하며 컴파일러에게 함수가 변수 측을 수정하지 않는다는 것을 알려야합니다."

내 질문 : 변수가 값으로 전달되기 때문에 여기서 "const"중복 / 불필요한 사용이 아니므로 함수가 어쨌든 수정할 수 없습니까?


const규정 파라미터 자체를 수정하는 기능을 내부 코드를 방지한다. 함수가 사소한 크기보다 클 때 이러한 보증은 함수를 빠르게 읽고 이해하는 데 도움이됩니다. 의 값이 side변경되지 않는다는 것을 알고 있다면 시간이 지남에 따라 읽는 동안 그 값을 추적하는 것에 대해 걱정할 필요가 없습니다. 어떤 상황에서는 컴파일러가 더 나은 코드를 생성하는 데 도움이 될 수도 있습니다.

일반적으로 좋은 스타일을 고려할 때 사소한 수의 사람들이 당연히 이것을합니다.


다음과 같이 할 수 있습니다.

int f(int x)
{
   x = 3; //with "const int x" it would be forbidden

   // now x doesn't have initial value
   // which can be misleading in big functions

}

참고 URL : https://stackoverflow.com/questions/8714250/isnt-const-redundant-when-passing-by-value

반응형