개발공부/C++
형변환을 오버로딩하기
dyson_ok
2019. 10. 23. 14:39
#include <iostream>
using namespace std;
class Cents
{
private:
int m_cents;
int count = 1;
public:
Cents(int cents = 0)
{
m_cents = cents;
}
int getCents()
{
return m_cents;
}
void setCents(int cents)
{
m_cents = cents;
}
operator int()
{
cout << "cast here" << endl;
return m_cents;
}
};
void printInt(const int& value)
{
cout << value << endl;
}
int main()
{
Cents cents(7);
cout << "int value = (int)cents;" << "\t";
int value = (int)cents;
cout << "value = int(cents);" << "\t";
value = int(cents);
cout << "value = static_cast<int>(cents);" << "\t";
value = static_cast<int>(cents);
//위 코드는 모두 같다.
cout << "printInt(cents);" << "\t";
printInt(cents);
return 0;
}
int value = (int)cents; cast here
value = int(cents); cast here
value = static_cast<int>(cents); cast here
printInt(cents); cast here
7
printInt함수에 들어갈때 파라미터의 자료형을 보면 const int& value라고 되어있기 때문에 그것 또한 캐스팅이 된다.