가인수가 각각 const, 비-const 인 두 함수의 오버로딩 ㅠㅠ
해련
안녕하세요 . ^ㅡ^ㅋ
c++함수 오버로딩에서..
두 함수의 가인수가 각각 const 포인터 와 비-const 포인터인 경우에는오버로딩이 가능한데 ..
왜 포인터가 아닌 const, 비-const 간에는 오버로딩이 안되는 걸까요 .
가령 ..
int plusone(const int a)
{
return a+1;
}
int plusone(int a)
{
return ++a;
}
이런 경우엔 왜 함수 중복 오류가 나는 걸까요 ?
혹자께서는 ..
주소에 의한 전달 이 이루어질 경우, const사용 여부에 따라원본 데이터의 변경 여부가 ..
결정되기 때문에 .. const 가 의미 있게 사용될 수 있지만 ..
값에 의한 전달 이 이루어질 경우엔, 실인수의 값이 가인수에 복사되는 식으로 전달이 되기 때문에 ..
가인수는 const 사용 여부와 상관없이 .. 어떤 식으로도 원본 데이터에 영향을 미치지 못하므로 ..
결국, const 를 사용하는 의미가 없다 ....... 고 하시더군요..
그러한 이유로 .. 가인수가 포인터가 아닌 경우에는 ..
const 를 사용하는 것과 그렇지 않은 것을 ..동일한 것으로 취급한다고 하시는데요 ..
값에 의한 전달 과 주소에 의한 전달차이는저도 알고 있습니다만 ..
그로써는 여전히 이해가 안되네요 .
피호출 함수측의 원본 데이터에 접근(읽기, 혹은 읽기/쓰기)하기 위한 용도가 아니더라도 ..
(즉, 그러한 용도와는 상관쓴?상관없이 ..)
가인수는 결국 호출 함수의 지역 변수이기 때문에 ..
호출 함수의 블럭 내부(본체)에놓인 ..
여느 const 와 비-const들과 마찬가지로 ..
나름대로의목적에 맞게.. 값을 읽기 혹은, 읽기/쓰기 용도로..
사용할 수가 있어야할 것 같은데..
위의 예를 보시면 아시겠지만..
함수 오버로딩을 꾀하면, 함수의 중복 정의 오류로 그게 불가능해진다는 겁니다 .
c++ 에서는 const , 비-const 간의오버로딩은, 포인터의 경우에만 ..
가능토록 제한하는 이유가 무엇일까요 .. ㅠㅠ
읽어주셔서 감사합니다 .