[C++] 함수 중첩과 디폴트 인자

2023. 1. 2. 22:31·C++
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
'C++' 카테고리의 다른 글
  • [C++] 템플릿, 포인터와 주소, 범위 지정 연산자 ::
  • [C++] 객체와 멤버, 변수와 배열
  • [C++] const, const 예제
  • [C++] 함수, 기억클래스, 구조체
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ios
    Xcode
    티스토리챌린지
    SWIFT
    코딩테스트
    Vision Pro
    운영체제
    옵셔널
    자바스크립트
    제어문
    UIKit
    메서드
    함수
    클래스
    프로퍼티 래퍼
    프로세스
    이니셜라이저
    네트워크
    디자인패턴
    연산자
    스위프트
    Initializers
    swiftUI
    combine
    Optional
    비동기
    변수
    배열
    visionOS
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[C++] 함수 중첩과 디폴트 인자
상단으로

티스토리툴바