오버로딩

2014. 2. 26. 12:09프로그래밍/용어정리

오버로딩

오버로딩이란 프로그래밍 언어에서 한 객체가 상황에 따라 다른 의미를 가질 수 있도록 해주는 특색을 의미한다. 이 용어는 피연산자의 데이터 형식이나 클래스에 따라 다르게 행동하는 연산자와 관련하여 가장 자주 사용된다. 예를 들어, x + yxy가 단순히 정수냐 혹은 복합적인 데이터 구조냐에 따라 다른 의미를 가질 수 있다. 모든 프로그래밍 언어가 오버로딩을 지원하는 것은 아니며, C++와 자바 등과 같은 대부분의 객체 지향형 언어의 특색이다. 결국 오버로딩이란 다형성의 한 형식이라 할 수 있다. (구글 펌)

 

쉽게 설명하면 오버로딩은 하나의 함수 명으로 여러 가지 동작을 구현해서 사용하는 하나의 방법입니다

오버로딩을 사용하면 여러 함수명을 사용하지 않고 함수를 관리 할 수가 있습니다.

예로 동일한 함수명을 가진 세 개의 함수를 작성하였습니다.

 

void test_function(int x){

    cout << "1번함수, 입력값은: " << x << endl;

}

 

void test_function(float y){

    cout << "2번함수, 입력값은: " << y << endl;

}

 

void test_function(int x, float y){

    cout << "3번함수, x+y= " << x+(int)y << endl;

}

 

그리고 아래와 같이 함수를 호출

test_function(17); // 이 경우 첫 번째 함수가 호출됩니다.

test_function(3.14f) // 이 경우 두 번째 함수가 호출됩니다.

test_function(17, 3.14f) // 이 경우 세 번째 함수가 호출됩니다.

 

결과



좀 더 생각해보면...

방향키의 입력에 따라 x축과 y축으로 이동하는 기능을 가진 함수가 있습니다.

함수 명은 move 라고 하겠습니다.

 function move(parm)

{

....

}


그런데 x,y축을 동시에, 즉 대각선으로도 이동하고 싶어졌습니다.

이 때 오버로딩을 사용하면 함수명을 move1이나 move2 같이 작성을 할 필요가 없어집니다.


function move(parm, parm2)

{

....

}


결과적으로 방향키의 입력에 따라서 처음 작성한 move 함수 또는 두 번째 작성한 move 함수가 동작하게 됩니다.

'프로그래밍 > 용어정리' 카테고리의 다른 글

전처리기란?  (0) 2014.11.29
함수와 서브루틴?  (0) 2014.11.12
바인딩과 가상함수  (2) 2014.03.03
오버라이딩, 오버로딩과의 차이점  (0) 2014.02.28