[명품 C++ Programming] chapter 6 : 함수 중복과 static 멤버(1) - 함수 중복과 모호성

eunee22·2023년 8월 23일

명품 C++ Programming

목록 보기
22/34

제가 대학교 1학년 때 [명품 C++ Programming] 교재로 진행되는 C++ 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다.
(2022.9 ~ 2022.12)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.

🍑함수 중복(function overloading)

  • 동일한 이름의 함수를 만드는 것
  • 다형성
  • C언어에서는 불가능
  • 함수 오버 ‘로딩’ 임을 주의하기

가능한 범위

  • 보통 함수들(전역 함수들) 사이
  • 클래스의 멤버 함수들 사이
  • 상속 관계의 기본 클래스와 파생 클래스의 멤버 함수들 사이

성공 조건

  1. 중복된 함수들의 이름 동일
  2. 매개 변수 타입이나 매개 변수 개수가 달라야함
  3. 리턴 타입은 무관

장점

  • 작성이 편리
  • 함수 이름을 구분해서 기억할 필요가 없음
  • 함수 호출 실수를 줄일수 있음

생성자 함수 중복

목적

다양한 형태로 초깃값을 전달하기 위해

소멸자 함수 중복

  • 가능
    → 소멸자는 매개 변수를 가지지 않으므로 클래스내에 오직 하나만 존재

🍑함수 중복의 모호성

  • 함수 중복의 조건을 갖추었다고 해도, 컴파일러가 어떤 함수를 호출할지 판단하기 어려운 경우 컴파일 오류가 발생

형 변환으로 인한 모호성

  • 함수의 매개 변수 타입과 호출문의 실인자 타입이 일치하지 않는 경우 보이지 않게 형변환을 시도 한다
    • charintlongfloatdouble
  • 왼쪽측에 있는 타입이 오른쪽에 있는 어떠한 타입으로 던 자동형 변환이 가능하여 일어나는 일

참조 매개 변수로 인한 모호성

  • 참조 매개 변수를 가진 함수와 보통 매개변수를 가진 함수가 중복 시
  • 예를들어 (int a) (int &a)인 경우 매개변수의 타입은 동일하고 참조이냐 보통 매개 변수이냐만 다르므로 어느 함수를 호출해야할지 모호함

디폴트 매개 변수로 인한 모호성

  • 디폴트 매개 변수를 가진 함수가 보통 매개 변수를 가진 함수와 중복 작성될 때
  • 디폴트 매개 변수는 뒤에 몰려서 작성되므로 매개변수의 앞쪽이 동일하다면 모호해질 가능성이 존재
    → 예를 들어 (int id, string s = “ ”) (int id) 같은 경우 호출 시 id의 값만을 넣어준다면 둘 중 어느 함수를 호출 해야할지 모호해짐
profile
보안 공부하는 대학교 4학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글