안녕하세요 판타지코딩입니다!
C++에는 오버로딩이라는 개념이 있습니다. 오늘은 오버로딩에 대해서 공부해보고 어떻게 활용할 수 있는지 알아보겠습니다.
1. 함수 호출 방법
오버로딩 설명에 앞서서 먼저 함수의 생성과 호출 방법에 대해서 알아보겠습니다. 함수를 생성하고 호출하는 것에 익숙하신 분들은 2번으로 넘어가셔도 됩니다!
int plus(int a, int b)
{
int result = a+b;
return result;
}
함수 호출에 대해 설명하기 위해서 'plus'라는 함수를 생성해 보았습니다. 코드를 잘 모르시는 분도 함수 이름을 통해서 어떤 기능을 하는지 유추가 가능하실겁니다. plus라는 이름처럼 덧셈을 하고 결과를 반환하는 함수입니다. 괄호 안의 int a와 int b는 인자를 의미합니다. a와 b에 int형 데이터를 넣어주면 아래에 작성된 코드를 수행합니다. a+b를 계산해서 int형 변수 result에 저장하고 그 값을 반환합니다. 함수 설명을 마쳤으니 이 함수를 호출해보겠습니다.
plus(1, 2);
위의 함수를 호출하는 코드입니다. 함수 이름인 'plus'를 작성하고 괄호 안에 인자를 넣어줍니다. 인자는 int형 변수이기 때문에 정수값을 넣어준 것입니다. 함수 호출 방법을 통해서 알 수 있는 것은 함수의 이름과 인자를 통해서 함수를 호출할 수 있다는 것입니다. 그럼 이제 오버로딩에 대해 이해할 준비가 되었습니다!
2. 오버로딩이 무엇일까?
위의 함수는 두 개의 인자를 받아서 덧셈을 하기 때문에 함수 호출시 함수명, 인자의 개수 등이 일치해야 합니다. 만약 인자로 1, 2, 3 이렇게 세 개를 넣는다면 오류가 발생할 것입니다. 왜냐하면 인자는 두개로 함수 생성시에 결정했기 때문입니다. 그럼 함수의 이름을 변경해서 인자를 세개 받는 함수를 생성하면 될까요? 물론 이것도 방법입니다. 그러나 함수의 기능은 덧셈인데 또 다른 이름을 지정하면 나중에 함수를 호출할 때 헷갈릴 수 있을 것 같습니다. 그럼 함수의 이름을 동일하게 할 수 있을까요? 그 기능이 바로 '오버로딩'입니다.
int plus(int a, int b)
{
int result = a+b;
return result;
}
int plus(int a, int b, int c)
{
int result = a+b+c;
return result;
}
같은 이름의 함수를 두 개 생성했습니다. 차이점이 있다면 바로 인자가 다르다는 것입니다. 우선 첫 번째 함수는 인자가 두 개 들어가고 두 개의 정수를 합해서 결과를 반환합니다. 두 번째 함수는 세 개의 인자를 받아 합해서 결과를 반환합니다. 이렇게 인자를 다르게해서 다른 기능을 하는 함수를 호출하는 것이 바로 오버로딩입니다. 그럼 위의 함수는 어떻게 호출할까요? 아래에서 호출 코드를 작성해보겠습니다.
plus(1, 2);
plus(1, 2, 3);
두 개의 함수를 호출해 보았습니다. 우선 첫 번째 함수는 인자로 1과 2가 들어갔고 결과는 3이 반환됩니다. 그리고 두 번째 함수는 인자로 1, 2, 3 이렇게 세 개의 정수를 받아 6이 반환됩니다. 이렇게 인자의 차이를 둬서 다른 함수를 호출하는 것을 바로 오버로딩이라고 합니다.
감사합니다!
'C언어' 카테고리의 다른 글
C++ queue / 큐 공부하기 (0) | 2023.01.26 |
---|---|
C++ 디폴트 생성자 (0) | 2023.01.09 |
C언어 포인터와 주소값 공부하기 / C언어 기초 (0) | 2023.01.05 |
C언어 char형 활용하기 / C언어 기초 (0) | 2023.01.04 |
C++ 생성자 / 클래스 / C++ 공부하기 (0) | 2023.01.03 |