반응형
Today
Total
Recent Posts
Recent Comments
Archives
11-28 01:57
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

UD_park's IT story

[C++] 오버로딩(Overloading) 함수의 다중정의 본문

IT - Language/C++

[C++] 오버로딩(Overloading) 함수의 다중정의

kingllzn 2018. 6. 15. 10:50
반응형
SMALL

(학습 서적 이것이 C++이다에서

내용 발췌하였습니다)

 

[보기용 예제 소스 코드에서 오류 발생시에

댓글이나 방명록에 글을 남겨 주시면 수정/보완하겠습니다]

 

 

이번에는 함수의 다중정의

즉, 오버로딩에 관하여

포스팅을 해보겠습니다

 

다중정의 즉, 오버로딩(Overloading)의

기본적인 설명은 다음과 같습니다

 

하나의 이름(함수, 변수 등)이 여러개의

의미를 가지는 것                           

이라고 정의 되어있습니다

 

이름은 같지만 기능등이

차이가 있는것이라고 생각하시면

될것 같습니다

 

쉽게 이야기하자면

이름이 같은 동명이인 이지만

첫 번째 "홍길동"은 의사이고

두 번째 "홍길동"은 군인이다

이라고 가정하자면

의사와 군인은 하는 역할과

업무가 다른것처럼

 

함수에서의 오버로딩 또한

이와 같은 개념이라고

생각하시면 될것같습니다

 

더 자세한 설명을 위해서

함수의 오버로딩을 사용한

소스 코딩을 보여 드리겠습니다

 

보시다시피 3개의 함수가

이름이 똑같습니다

3개의 함수의 각각 차이는

 

첫 번째 함수는 변수 3개에

정수형, 그리고 덧셈 기능입니다

 

두 번째 함수는 변수 3개에

실수형, 그리고 곱셈 기능입니다

 

세 번째 함수는 변수 2개에

정수형, 그리고 덧셈 기능입니다

 

출력 결과를 보시다시피 각 3개의

함수가 정확하게 값이 나오는데요

 

과연 어떤 판별기준으로 이름이 같은데

각자 필요한 함수를  찾아서 쓸 수 있을까

라는 생각을 가지게 합니다

 

그 답은 바로 함수의 자료형과 반환형식,

그리고 매개변수의 개수로 구분합니다

 

네모 : 자료형(반환 형식)                                                                             

동그라미 : 매개 변수                                                                       

밑 줄 : 반환값 및 연산                                                                    

즉, 첫 번째와 두 번째는

매개 변수는 같지만 자료형과 반환형식이

정수형과 실수형으로 다르기에

올바르게 찾아 갈 수 있습니다

 

그리고 첫 번째와 세 번째는

자료형과 반환형식 모두 같지만

매개변수의 개수가 첫 번째는 3개

세 번째는 2개로 개수가 다릅니다

 

이렇게 이름이 같더라도 자료형과 반환형식,

그리고 매개변수의 개수로 구분하는 것을

통틀어서 오버로딩(=다중정의)라고 합니다

 

 

함수 오버로딩에서 흔히

발생하는 실수가 2가지 있습니다

① 반환 형식만 다를 때

② 호출 규칙만 다를 때

 

① 반환 형식만 다를 때

 

ex)

int Add(int a, int b);

double Add(int a, int b);

 

② 호출 규칙만 다를 때

ex)

int _cdecl Add(int a, int b);

int _stdcall Add(int a, int b);

_cdecl과 _stdcall의 차이점은

함수를 어떻게 불러오는지에 대한

방법의 차이입니다

 

지금 차이점에 대해 깊게

파고들어가기엔 앞서 배워야할게

많이 있기에 나중에 다뤄 보도록

하겠습니다

 

혹시 다른것에 대해 궁금하신게

있으시다면

댓글에 달아주세요

 

아는것이면 친절하게 쉽게

모르는것이면 또 제가 알아내서

친절하게 쉽게 포스팅해서

설명해드리겠습니다

 

이상으로 함수 오버로딩에

대한 포스팅을 마치겠습니다

 

 

반응형
LIST
Comments