개발공부/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라고 되어있기 때문에 그것 또한 캐스팅이 된다.