• 회원가입
  • 로그인
  • 구글아이디로 로그인

[function] C++ - Function Overloading (함수 오버로딩)

1,968  
목차
  1. Function Overloading 정의
  2. Function Overloading 예제

 

Function Overloading 정의

[정의]

 

오버로딩 (= 동일 함수명으로 여러 함수 정의) 가능 경우.

① 매개변수 개수가 다른 경우.

② 매개변수 타입이 다른 경우.

 

PS. 단지, 매개변수명만 다른 경우엔 메서드 오버로딩 불가.  

 

cf. Java Overloading과 유사.


[예제]

 

int myFunction(int x)

 

// 개수 같아도 자료형 다른 경우, 오버로딩 가능 O.

float myFunction(float x)

 

// 자료형 같지만 개수 다른 경우, 오버로딩 가능 O.

int myFunction(int x, int y)

 

// 자료형과 개수 모두 다른 경우, 오버로딩 가능 O.

double myFunction(double x, double y)


// 단지, 변수명만 다른 경우, 오버로딩 가능 X

int myFunction(int y) // 에러 유발.

 

 

Function Overloading 예제

[오버로딩 사용 X 경우] - int형과 double형 함수를 각각 정의.

 

#include <iostream>

using namespace std;

 

int plusInt(int x, int y) {

  return x + y;

}

double plusDouble(double x, double y) {

  return x + y;

}

int main() {

  int a = plusInt(3, 4);

  double b = plusDouble(2.41, 3.14);

  cout << "int: " << a << "\n";

  cout << "double: " << b;

  return 0;

}

 

결과값:

int: 7

double: 5.55


[오버로딩 사용 O 경우 ★] - int형과 double형 함수를 오버로딩.

※ 권장 방식.

 

#include <iostream>

using namespace std;


int plusNums(int x, int y) {

  return x + y;

}

double plusNums(double x, double y) {

  return x + y;

}

int main() {

  int a = plusNums(3, 4);

  double b = plusNums(2.41, 3.14);

  cout << "int: " << a << "\n";

  cout << "double: " << b;

  return 0;

}

 

결과값:

int: 7

double: 5.55


PS.

주의: 함수명을 plus로 할 경우, 아래와 같은 에러 발생.

error: reference to ‘plus’ is ambiguous

이 문제를 해결하려면, 아래 2가지 방법 중 하나로 해결.

① 함수명을 다르게 변경해 선언. (예) plus → plunNums

② 함수 호출 시, plus 앞에 :: 추가. (※ 아래 예제 참고.)

  

#include <iostream>

using namespace std; // 함수명이 plus일 경우, 에러 야기.


int plus(int x, int y) {

  return x + y;

}

double plus(double x, double y) {

  return x + y;

}

int main() {

  int a = ::plus(3, 4);

  double b = ::plus(2.41, 3.14);

  cout << "int: " << a << "\n";

  cout << "double: " << b;

  return 0;

}


결과값:

int: 7

double: 5.55 

https://stackoverflow.com/questions/31593548



분류 제목
basic C++ - references (참조변수) + 변수의 메모리 주소
basic C++ - Pointers (포인터)
function C++ - Functions (함수) - 정의/호출
function C++ - Function Parameters (함수 매개변수)
function C++ - Function Overloading (함수 오버로딩)
class C++ - OOP (객체 지향 프로그래밍)
class C++ - Class (클래스) / Object (객체)
class C++ - Class Methods (클래스 메서드)
class C++ - Constructors (생성자)
class C++ - Access Specifiers (접근지정자)
class C++ - Encapsulation (캡슐화)
class C++ - Inheritance (상속)
class C++ - Polymorphism (다형성)
class C++ - Files (파일) - 파일생성/파일읽기/파일쓰기
class C++ - Exceptions (= Try...Catch..) - 에러 제어
howto C++ - 사용자 입력값 더하기 ★ (Add Two Numbers)
2/2
목록
찾아주셔서 감사합니다. Since 2012