2014. 2. 26. 12:09ㆍ프로그래밍/용어정리
오버로딩
오버로딩이란 프로그래밍 언어에서 한 객체가 상황에 따라 다른 의미를 가질 수 있도록 해주는 특색을 의미한다. 이 용어는 피연산자의 데이터 형식이나 클래스에 따라 다르게 행동하는 연산자와 관련하여 가장 자주 사용된다. 예를 들어, x + y는 x와 y가 단순히 정수냐 혹은 복합적인 데이터 구조냐에 따라 다른 의미를 가질 수 있다. 모든 프로그래밍 언어가 오버로딩을 지원하는 것은 아니며, 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 함수가 동작하게 됩니다.