(C++) 9.7 형변환을 오버로딩과 함수 객체

이준우·2021년 11월 25일
0

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;
}

이와 같이 작성할 수 있다.

0개의 댓글