C++의 함수 오버로딩

함수 오버로딩은 두 개 이상의 함수가 이름은 같지만 매개변수가 다를 수 있는 객체 지향 프로그래밍의 기능입니다. 함수 이름이 다른 작업으로 오버로드되는 경우 이를 함수 오버로딩이라고 합니다. 함수 오버로딩에서는 함수 이름이 동일해야 하고 인수는 달라야 합니다. 함수 오버로딩은 C++의 다형성 기능의 예로 간주될 수 있습니다.

이름은 같지만 매개변수가 다른 여러 함수를 함수 오버로딩이라고 합니다.
하나의 작업만 수행해야 하고 함수 이름이 동일하면 프로그램의 가독성이 높아집니다.
주어진 숫자의 덧셈을 수행해야 하지만 인수의 개수에는 제한이 없다고 가정합니다. 두 개의 매개변수에 대해 a(int,int), 세 개의 매개변수에 대해 b(int,int,int)와 같은 함수를 작성하면 이름이 다르기 때문에 함수의 동작을 이해하기 어려울 수 있습니다.

매개변수는 함수 오버로드에 대한 다음 조건 중 하나 이상을 따라야 합니다.

  • 매개변수는 다른 유형이어야 합니다.

추가(정수 a, 정수 b)
추가(더블 a, 더블 b)

다음은 위 논의의 구현입니다.

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum = '> < < (a + b);> }> void> add(> double> a,> double> b)> {> > cout < < endl < <> 'sum = '> < < (a + b);> }> // Driver code> int> main()> {> > add(10, 2);> > add(5.3, 6.2);> > return> 0;> }>

산출

sum = 12 sum = 11.5 
  • 매개변수의 숫자는 달라야 합니다.

추가(정수 a, 정수 b)
추가(정수 a, 정수 b, 정수 c)

다음은 위 논의의 구현입니다.

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum = '> < < (a + b);> }> void> add(> int> a,> int> b,> int> c)> {> > cout < < endl < <> 'sum = '> < < (a + b + c);> }> // Driver code> int> main()> {> > add(10, 2);> > add(5, 6, 4);> > return> 0;> }>

산출

sum = 12 sum = 15 
  • 매개변수에는 서로 다른 매개변수 순서가 있어야 합니다.

추가(int a, double b)
추가(더블 a, int b)

다음은 위 논의의 구현입니다.

C++




#include> using> namespace> std;> void> add(> int> a,> double> b)> {> > cout < <> 'sum = '> < <(a+b);> }> void> add(> double> a,> int> b)> {> > cout <'sum = ' < <(a+b); } // Driver code int main() { add(10,2.5); add(5.5,6); return 0; }>

산출

sum = 12.5 sum = 11.5 

다음은 함수 오버로딩을 보여주는 간단한 C++ 예제입니다.

CPP




#include> using> namespace> std;> void> print(> int> i) {> > cout < <> ' Here is int '> < < i < < endl;> }> void> print(> double> f) {> > cout < <> ' Here is float '> < < f < < endl;> }> void> print(> char> const> *c) {> > cout < <> ' Here is char* '> < < c < < endl;> }> int> main() {> > print(10);> > print(10.10);> > print(> 'ten'> );> > return> 0;> }>

산출

 Here is int 10 Here is float 10.1 Here is char* ten 

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum ='> < <(a+b);> }> void> add(> int> a,> int> b,> int> c)> {> > cout <'sum =' < <(a+b+c); } main() { add(10,2); add(5,6,4); return 0; }>

C++




#include> using> namespace> std;> void> add(> int> a,> double> b)> {> > cout < <> 'sum ='> < <(a+b);> }> void> add(> double> a,> int> b)> {> > cout <'sum =' < <(a+b); } main() { add(10,2.5); add(5.5,6); return 0; }>

함수 오버로딩은 어떻게 작동하나요?

  • 정확히 일치 :- (함수 이름 및 매개변수)
  • 만약에 정확히 일치하지 않는 항목이 발견되었습니다.

->Char, Unsigned char 및 short가 int로 승격됩니다.

->Float가 2배로 승격되었습니다.

  • 일치하는 항목이 없는 경우 :

->C++에서는 표준 변환을 통해 일치하는 항목을 찾으려고 합니다.

  • 다른 오류
  1. 함수 오버로딩 및 반환 유형
  2. C++에서 오버로드할 수 없는 함수
  3. 함수 오버로딩 및 const 키워드
  4. C++의 함수 오버로딩과 함수 재정의

C++의 함수 오버로딩에 관한 최근 기사