class Number
{
...
public:
operator int() const { return val; };
private:
int val = 100;
}
int main()
{
Number number;
int temp = number;
cout << temp << endl; // val 의 값이 들어갔다.
}
int temp = number;
이렇게 사용하면 묵시적 형변환 이라고 한다.
그런데 명시해줘야만 변환이 일어날 수 있게 할 수 가 있다. 생각지도 못한 변환이 일어나는 것을 조기에 방지 할 수 있을 것 같다.
explicit operator int() const { return val; };
...
int main()
{
StaticTest number;
int temp = number; // error 발생!!
cout << temp << endl;
}
분명하게 명시해주면 error는 사라진다.
int temp = (int)number;