728x90
반응형
1. 함수 중첩(function overloading)
- 함수 오버로딩이라고도 부름
- 다형성을 구현하는 한가지 방법이다.
- C에서는 기능이 같아도 처리하는 자료형에 따라 다른 이름의 함수를 사용한다.
- C++에서는 하나의 함수 이름을 중첩해서 사용 가능하다.
- 하나의 함수명을 여러 개의 유사 목적으로 사용할 수 있다.
1.1 함수 중첩 예
- add(10 ,20)에 의해서는 첫 번째 add()함수가 불려지고, add(10.5,20.3)에 의해서는 두 번째 add() 함수가 불려집니다.
- 즉, 컴파일러가 실매개변수의 입력 자료형에 따라서 자동적으로 해당 함수를 연결해줍니다.
1.2 함수 중첩을 하는 2가지 경우
1. 매개변수의 형이 다른 경우
2. 매개변수의 개수가 다른 경우
2. 생성자 중첩
- 클래스의 멤버함수도 중첩이 가능하고, 생성자도 중첩이 가능하다.
- 하지만 소멸자는 중첩이 불가능하다.
- 생성자 함수도 매개변수를 가질 수 있기 때문에 매개변수의 수나 자료형에 따라 여러 개의 생성자 함수를 중첩할 수 있다.
- 생성자 함수를 중첩시키는 것은 객체에 초기값을 다양하게 주는 선택 기회를 제공하는 것이다.
2.1 생성자 중첩 예
3. 디폴트 인자
- 디폴트 매개변수 (default parameter, default argument)
- int add(int, int); // 매개변수 2개
- C++에서는 함수를 호출할 때 별도의 매개변수를 전달하지 않아도 기본적인 값을 전달하도록 함수 원형을 선언할 때 디폴트 값을 지정할 수 있다.
- 해당 매개변수가 주어지지 않으면 디폴트 인자 값이 할당된다.
- 모든 매개변수에 디폴트 값을 줄 필요는 없으며, 필요한 곳에만 준다.
- 디폴트 매개변수의 사용은 함수 중첩의 축약형이다.
- 디폴트 매개변수를 갖는 함수를 만들 때, main()함수 전에 함수 선언을 하면 선언부에만 디폴트 인자를 지정해야 한다.
- int add(int a=1, int b=2); // 선언부에 디폴트 인자 작성
- 디폴트 매개변수를 정의하기 시작하면 그 다음(오른쪽)의 매개변수들은 모두 디폴트 매개변수를 가져야 한다.
3.1 디폴트 인자 예
- add()로 호출할 경우에는 i=1, j=2
- add(10)으로 호출할 경우에는 i=10, j=2
- add(10,20)으로 호출하면 i=10, j=20
- 즉, 형식매개변수보다 적은 실매개변수로 호출할 경우 왼쪽의 매개변수부터 값을 할당받는다.
728x90
반응형
'C++' 카테고리의 다른 글
[C++] 템플릿, 포인터와 주소, 범위 지정 연산자 :: (0) | 2023.01.04 |
---|---|
[C++] 객체와 멤버, 변수와 배열 (0) | 2022.12.28 |
[C++] const, const 예제 (0) | 2022.12.26 |
[C++] 함수, 기억클래스, 구조체 (1) | 2022.09.22 |
[C++] 매개변수, 인자, 리턴값, 함수, 여러 예제 (0) | 2022.09.18 |