c23 [C++] 함수 중복(다형성)
본문 바로가기
[C++]

[C++] 함수 중복(다형성)

by Jarvis2304 2022. 10. 26.

▶ 함수 중복 (function overloading)

- 동일한 이름의 함수가 공존

- C++의 다형성

- C언어에서는 불가능

 

▷ 함수 중복이 가능한 범위

- 보통 함수들 사이

- 클래스의 멤버 함수들 사이

- 상속관계에 있는 기본 클래스와 파생 클래스의 멤버 함수들 사이

 

▷ 함수 중복 성공 조건

- 중복한 함수들의 이름 동일

- 중복된 함수들의 매개변수 타입이 다르거나 개수가 달라야함

- 리턴 타입은 함수 중복과 무관

 

 

예제) 함수 중복 성공 사례

 

예제) 함수 중복 실패 사례

- 리턴 타입은 달라도됨

- 매개변수 타입과 개수가 모두 같아 함수 중복이 성립되지 않았음

 

 

▷ 함수 중복의 편리함

- 동일한 이름을 사용하면 함수 이름을 구분하여 기억할 필요 없고, 함수 호출을 잘못하는 실수를 줄일 수 있음

 

 

예제) big() 함수 중복 연습

 

 

 

 

예제) sum() 함수 중복 연습

 

 

 

 

▶ 생성자 함수 중복

- 생정자 함수 중복 가능

▷ 목적

- 객체 생성시, 매개 변수를 통해 다양한 형태의 초깃값을 전달하기 위해

 

 

string 클래스의 생성자 중복 사례

 

 

 

 

▶ 소멸자 함수 중복

- 소멸자 함수 중복 불가

- 소멸자는 매개변수를 가지지 않음

- 한 클래스 내에서 소멸자는 오직 하나만 존재

 

 

 

▶ 디폴트 매개변수 (default parameter)

- 매개변수에 값이 넘어오지 않는 경우, 디폴트 값을 받도록 선언된 매개변수

● '매개변수 = 디폴트값' 형태로 선언

 

▷ 디폴트 매개변수 선언 

▷ 디폴트 매개변수를 가진 함수 호출

 

 

 

▷ 디폴트 매개변수 사례

 

 

 

▷ 디폴트 매개변수에 관한 제약 조건

- 디폴트 매개변수는 보통 매개변수 앞에 선언될 수 없음

- 디폴드 매개변수는 끝 쪽에 몰려 선언되어야 함

 

 

▷ 매개변수에 값을 정하는 규칙

● 2개의 디폴트 매개 변수로 구성된 경우

 

 

● 많은 디폴트 매개 변수를 가진 경우

 

 

예제) 디폴트 매개 변수를 가진 함수 선언 및 호출

 

 

예제)  디폴트 매개변수를 가진 함수 만들기

 

 

▷ 함수 중복 간소화

● 디폴트 매개변수의 장점 → 함수 중복 간소화

 

 

● 중복 함수들과 디폴트 매개변수를 가진 함수를 함께 사용 불가

 

 

예제 1) 디폴트 매개변수를 이용하여 중복 함수 간소화

 

 

예제 2) 생성자 함수의 중복 간소화

 

예제2 정답)

 

 

 

▶ 함수 중복의 모호성

- 함수 중복이 모호하여 컴파일러가 어떤 함수를 호출하는지 판단하지 못하는 경우

● 형 변환으로 인한 모호성

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

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

 

▷ 매개 변수의 형 변환으로 인한 함수 중복의 모호성

 

 

예제) 형 변환으로 인해 함수 중복의 모호성

 

 

예제) 참조 매개변수로 인한 함수 중복의 모호성

 

 

 

예제) 디폴트 매개변수로 인한 함수 중복의 모호성

 

 

 

 

 

'[C++]' 카테고리의 다른 글

[C++] 프렌드  (0) 2022.11.01
[C++] static  (0) 2022.10.26
[C++] 얕은 복사와 깊은 복사  (0) 2022.10.23
[C++] 참조  (0) 2022.10.23
[C++] 인자 전달 방식  (0) 2022.10.15

댓글