오버로딩과 다형성 (오버로딩은 그냥 다른 datatype 지원 그 자체다.)
2020. 9. 10. 15:05ㆍ컴퓨터 수업/C++
@오버로딩
overloading. 과다적재.라는 뜻이다.
하지만 C++ 에선 중복적재라고 이해해야 한다.
객체지향적 프로그래밍에서 중요한 게 뭐라고? 바로 다형성(polymorphism)이다.
다형성 : 프로그램 언어의 각 요소들이 다양한 자료형에 속하는 것이 허가되는 성질을 가리킨다.
중복적재가 무엇인지 알아보고 이것이 왜 다형성에 부합하는지 알아보자.
@코드
void point(int x,int y)
{
cout <<"정수 좌표 "<<"[" << x << "," << y <<"]" << endl;
}
void point(float x,float y)
{
cout <<"실수 좌표 "<<"[" << x << "," << y <<"]" << endl;
}
동일한 함수명 point가 사용되었다.
동일한 함수명 point에 중복으로 사용되었다.
함수가 중복 적재되었다.라는 의미로 받아들여진다.
이게 왜 다형성이지?라는 것은 다형성의 의미 "다양한 자료형에 따라 다양한 결과값을 도출하는것." 이라고 이해하면 좋겠다.
다양한 자료형을 지원하려면 당연히 중복적재 되어야한다.
@함수의 오버로딩 심화
#include <iostream>
using namespace std;
int point(int x)
{
cout << "int" << endl;
return x;
}
double point(double x)
{
cout << "float" << endl;
return x;
}
int main()
{
cout << point(3.2) << endl;
}
서로 다른 자료형을 argument로 사용하였다면 출력(return) 값의 datatype이 달라도 된다.
#include <iostream>
using namespace std;
int point(int x)
{
cout << "int" << endl;
return x;
}
double point(int x)
{
cout << "float" << endl;
return float(x);
}
int main()
{
cout << point(3.2) << endl;
}
서로 다른 자료형이 아니라 같은 자료형을 argument로 사용하였기에 오버로딩이 아니고, 당연히 컴파일도 되지 않는다.
(모호함 문제)
즉, 오버로딩은 argument의 수가 다르거나 자료형이 달라야만 한다.
@default argument에 대해서는 수업자료를 붙여 넣겠다.
class의 기본 생성자를 코딩할 때, 도움이 될 것.
'컴퓨터 수업 > C++' 카테고리의 다른 글
연산자 오버로드(operator overload)//ostream 나중에 채워넣기 (0) | 2020.09.10 |
---|---|
friend 함수 (0) | 2020.09.10 |
this 포인터 (0) | 2020.09.10 |
선언과 정의 (0) | 2020.09.10 |
C++ include style, 설명하면서 자연스럽게 linker와 preprocessor (0) | 2020.09.09 |