아래 연산자 오버로딩(overloading)을 어떻게 이해해야 하나요?

라스코니의 이미지

아래와 같은 코드가 있는데 어떻게 이해해야 할 지 모르겠네요.
정확하게는 어떻게 써야 할지 모르는 거지만요.

class CType {
 
public :
   operator int*()
   {
       return Data;
   }
 
   operator int&()
   {
       return Data[0];
   }
private :
   int Data[10];
 
} tmp;

tmp의 내부 멤버 배열을 가져오는 것 같은데 어떻게 써야 할지 모르겠습니다.

int a = *tmp;
int b = &tmp;

이렇게 써야 하는지요?

익명 사용자의 이미지

캐스팅 연산자입니다.
CType이 int*와 int&로 캐스팅될 때를 정의해 놓았네요.

int* a = static_cast<int*>(tmp);
int& b = static_cast<int&>(tmp);
라스코니의 이미지

감사합니다. ^^
역시 c++의 길은 멀고도 험한 듯 합니다....