logo

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;> }>

>

1차 논리
>

인터넷이 뭐야?
산출

 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++의 함수 오버로딩에 관한 최근 기사