UD_park's IT story
[C++] 오버로딩(Overloading) 함수의 다중정의 본문
(학습 서적 이것이 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의 차이점은
함수를 어떻게 불러오는지에 대한
방법의 차이입니다
지금 차이점에 대해 깊게
파고들어가기엔 앞서 배워야할게
많이 있기에 나중에 다뤄 보도록
하겠습니다
혹시 다른것에 대해 궁금하신게
있으시다면
댓글에 달아주세요
아는것이면 친절하게 쉽게
모르는것이면 또 제가 알아내서
친절하게 쉽게 포스팅해서
설명해드리겠습니다
이상으로 함수 오버로딩에
대한 포스팅을 마치겠습니다
'IT - Language > C++' 카테고리의 다른 글
[C++] 생성자와 소멸자, 디폴트/변환 생성자 (0) | 2018.06.16 |
---|---|
[C++] 객체 지향과 Class의 개념 및 사용법 (0) | 2018.06.16 |
[C++] 인라인 함수의 기본 개념과 사용법 (0) | 2018.06.15 |
[C++] 함수 템플릿에 대한 설명 (0) | 2018.06.14 |
[C++] 동적할당에 대한 개념과 사용법 (0) | 2018.06.12 |