3omh4n
3omh4
3omh4n
  • 분류 전체보기 (65)
    • wargame - system (0)
      • DreamHack (9)
      • FTZ (5)
      • LoB (4)
      • pwnable.kr (1)
    • wargame - reversing (0)
      • DreamHack (5)
    • wargame - web (6)
      • webhacking.kr (3)
      • DreamHack (3)
      • HackCTF (0)
    • CS (21)
      • system (19)
      • reversing (0)
      • Linux (2)
    • python (5)
      • Flask (5)
    • C++ (3)
    • 개인기록 (2)
    • 이거저거 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

태그

  • error
  • hackerschool
  • Devtools
  • Dreamhack
  • langage
  • BOF
  • Programming
  • LOB
  • flask
  • python
  • C++
  • webhacking
  • hacking
  • ftz
  • systemhacking
  • System
  • RELRO
  • Reversing
  • ROP
  • pwntools

티스토리

전체 방문자
오늘
어제
3omh4n

3omh4

C++

[C++] 함수 오버로딩 & 매개변수 디폴트 값 (Function overloading & default value)

2022. 1. 5. 01:50

함수 오버로딩

함수의 이름이 동일하더라도, 매개변수 선언형태가 다르면 함수정의가 가능하다.

int MyFunc(int n) { ... }
int MyFunc(char c) { ... }
int MyFunc(int n1, int n2) { ... }

MyFunc(1) // MyFunc(int n) 실행
MyFunc('a') // MyFunc(char c) 실행
MyFunc(1,2) // MyFunc(int n1, int n2) 실행

위의 세 함수는 이름이 동일하지만 매개변수의 선언이 다르다. C++에서는 동일한 이름의 함수정의를 허용한다. 함수 호출 시 전달되는 인자를 통해서 호출하고자 하는 함수를 구분할 수 있기 때문이다.

 

C++에서 함수호출

 

C++은 호출할 함수를 찾을 때 함수의 이름과 매개변수의 선언(자료형, 개수) 를 이용해 호출대상을 찾는다.

예를 들어서 MyFunc(1,2)를 호출하면 다음과 같이 호출 함수를 찾는다.

 

🌟 두 개의 int형 정수를 인자로 전달받을 수 있는 MyFunc이라는 함수를 찾아라

 

C언어와의 비교

  • C언어의 경우 오버로딩이 불가능하다 → 동일한 이름의 함수가 있을 시 컴파일 오류

 

이유

C언어는 호출할 함수를 찾을 때 함수의 이름만 이용해서 호출대상을 찾는다. 따라서 매개변수의 개수나 자료형이 다르다고 해도 이는 고려대상이 아니어서 다른 함수라고 인식이 불가능하다.

 


 

매개변수 디폴트 값

int MyFunc(int n1, int n2, int n3 = 3) { ... } 
int MyFunc(int n1, int n2 = 2, int n3 = 3) { ... } 
int MyFunc(int n1 = 1, int n2 = 2, int n3 = 3) { ... }

MyFunc() //MyFunc(int n1 = 1, int n2 = 2, int n3 = 3) 의 경우 1,2,3이 전달된 것으로 간주

 

디폴트 값 규칙

  • 반드시 매개변수의 오른쪽부터 채우는 형태로 정의되어야 함

 

이유

  • 함수에 전달되는 인자가 왼쪽에서부터 오른쪽으로 채워지기 때문

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

[C++] namespace  (0) 2022.01.05
[C++] 인라인 함수 (Inline Function)  (0) 2022.01.05
    'C++' 카테고리의 다른 글
    • [C++] namespace
    • [C++] 인라인 함수 (Inline Function)
    3omh4n
    3omh4n

    티스토리툴바