[C++] 중복 함수 호출시 모호성 질문

[C++] 중복 함수 호출시 모호성 질문

작성일 2024.04.03댓글 2건
    게시물 수정 , 삭제는 로그인 필요

중복함수 호출시 모호성에 대한 문제를 푸는데 이해가 안돼서 질문드립니다..!

정답이 2번인거까진 고를 수 있고, 이해도 되는데요.
1번이 왜 안되는건지 헷갈려서 여쭤봅니다.

int add(int a, int &b)함수에서 참조연산자 b에 대한 디폴트매개변수를 함수 구현시 따로 작성해주게 되면 1번도 가능...하게 될 수 있나요?

문제 상에서는 2번이 너무 정답인건 알겠으나,

1번에서 int &b를 따로 디폴트매개변수로 주게되면 main()에서 add(5)와 같이 호출시 함수호출의 모호성이 발생할 수도 있지 않나 궁금해서요...

아직 공부하는 중이라 부족한게 많습니다ㅠㅠ 자세한 설명 부탁드립니다!



#c++ 중복제거 #c++ 중복없는 난수 생성 #c++ 중복 없는 배열 #c++ 중복순열 #c++ 중복조합 #c++ 중복되지 않는 난수 생성 #c++ 중복 include #c++ 중복 확인 #c++ 중복실행 방지 #c++ 중복연산자

profile_image 익명 작성일 -

모호성이 발생하는 경우에는 매개변수의 수가 같고, 입력되어야 하는 값의 종류가 같은 경우에 발생합니다.

기본값을 주게 되면, 매개변수의 수가 가변이 되어서 모호성이 많이 발생할 수 있습니다.

int add(int a, int b = 0);

과 같이 선언되었다면,

int add(int a);

와도 모호성 충돌이 생기고요.

int add(int a, int b);

와도 모호성 충돌이 생깁니다.

레퍼런스 타입인 경우도 마찬가지입니다. 입력되어야 하는 값의 종류가 같기 때문에 모호성 충돌이 생겨요.

const로 제한하는 경우에도 생길 수 있으니까요. 모호성을 판별하기 위해서는 이 경우 어떤 함수가 불리는 것이 올바른지 따져보시면 쉽게 이해할 수 있습니다.

profile_image 익명 작성일 -

맞는 말씀이십니다.

int add (int a, int &b = 7);

이런 형식으로 함수를 선언하게 되면, 위 함수를 호출할 때는 add(5); 이런 식으로 a에만 매개변수를 사용할 수 있으므로, int add(int a); 형식의 함수와 모호성이 발생하게 됩니다.

하지만, 본 문제에 있는 1번 항목의 int add(int a, int &b)함수는 int add(int a, int &b = 8); 함수와는 형식이 다른 함수입니다.

그 이유는 int add(int a, int &b)함수는 호출할 때 add(0, 10); 식으로 매개변수 두개를 전부 기입해줘야만 호출할 수 있지만,

int add(int a, int &b = 8); 함수는 호출할 때 add(1); 방식과 add(1, 12); 식으로 두가지 방식으로 호출할 수 있기 때문이죠.

정리하면, b를 디폴트 매개변수로 선언해서 함수를 작성했다면 모호성이 발생할 가능성이 있으나, 1번 항목의 함수에서는 디폴트 매개변수를 선언하지 않았으므로, 모호성이 발생할 가능성이 없다고 보는게 맞습니다.

Thread함수중복 호출..

... 생겨서 질문드려요.. Thread를 이용해서 다중접속 가능한... 일반적인 함수의 경우 중복 호출되어도 상호 간섭이... C/C++ 같은 경우는 제품에 따라 Mutex 나 기타 다른 형식으로...

C++ 디폴트 매개변수와 중복 함수 선언

디폴트 매개변수와 중복 함수호출 시 컴파일러 인식 문제 때문에 같이 선언할 수 없다고 배웠는데요, 그렇다면 void sum () void sum (int a, int b) void sum...

[c++ 질문] 함수호출되었는지 확인

a클래스에서 void a::count() { } count함수가 있습니다.... count가 호출됬는지 안됬는지에 대한 유무를 저장할... **질문자님 위해서 열심히 썼는데..!! 채택...

C++ 함수정의 질문

만약에 헤더파일에 함수를 추가한다고하면은 모든파일은 하나의 정의 만을갖고 중복정의는 가지면 안되서 함수정의만 추가하는데 그럼 사용자 정의 함수말고 표준 함수들이...

초보가 비주얼c++질문드릴께요...

안녕하세요 이제막 c++에 입문하는 초보랍니다. 많은 조언... 저장하여 호출함수에 반환한다. size는 배열의 크기이다. ② void get_array(int...

C++ 인라인 함수 (inline 키워드)

인라인 함수(inline function) 위와 같이 C++에서 함수호출은 꽤 복잡한 과정을... 출처 : http://www.tcpschool.com/cpp/cpp_cppFunction_inlineFunction 질문 1. 함수 호출 과정으로 생기는...

C++ 간단한 질문

중복함수 호출시 어떤 함수호출하는지 판단할 수 없는 모호성의 가능성이 있는 함수를 찾는 문제인데요 1. int add(int a,int b); int add(int a,int &b) 2. int add...