static_cast (typecast) 형변환을 오버로딩 하는 방법을 알아보자.
오버로딩한 typecast된 것을 볼 수 있다.
dollar를 cents로 바꾸는 프로그램을 작성한다고 치면,
using namespace std;
class Cents
{
private:
int m_cents;
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;
}
};
class Dollar
{
private:
int m_dollars = 0;
public:
Dollar(const int& input)
: m_dollars(input)
{}
operator Cents()
{
return Cents(m_dollars * 100);
}
};
void printInt(const int & value)
{
cout << value << endl;
}
int main()
{
Dollar dol(2);
Cents cents = dol;
printInt(cents);
return 0;
}
이와 같이 작성할 수 있다.