목적
- 강제 형변환에 대해 정확한 이해를 가진다.
- 오버로딩 함수를 작성한다.
문제
풀이
#include <iostream>
using namespace std;
void add(double aA, double aB)
{
cout << "add(double, double) 함수가 호출되었습니다." << endl;
cout << aA << " + " << aB << " = " << aA + aA << endl;
return;
}
void add(int aA, int aB)
{
cout << "add(int, int) 함수가 호출되었습니다." << endl;
cout << aA << " + " << aB << " = " << aA + aB << endl;
return;
}
int main(void)
{
double dA, dB;
dA = dB = 0;
cout << "두 실수를 입력하세요 : ";
cin >> dA >> dB;
cout << endl;
if((int)dA == dA && (int)dB == dB) add((int)dA, (int)dB);
else add(dA, dB);
return 0;
}
- 오버로딩 함수는 형식(프로토타입)에 따라 같은 함수명이라도 서로 다른 인수와 다른 출력을 가질수 있게 만들어진 함수 형식입니다. 여러 제약을 완화 하는데 많은 도움을 줍니다.
- double(배정도 소숫점) 형식에서 int(정수형) 형식으로 강제 형변환(캐스팅)을 하면 소숫점이 떨어져 나가기 때문에 형변환 하기 전과 후의 값 상태를 봐서 함수의 인수를 int 형으로 할 것인지 아니면 double 형으로 할것인지 정하면 됩니다.
참고
- http://www.winapi.co.kr/clec/cpp1/5-3-4.htm : 캐스트(cast, 형변환) 연산자
- http://tea815.com.ne.kr/cpp/604.htm : 오버로딩(overloading)