요즘 C++다시하고 있는데
이거 왜케 이해안되지 ㅠㅠ
오랜만에 해서 그런지 이유를 몰겠어;

class Point
{
private:
        int xpos, ypos;

public:
        Point(int x=0, int y=0) : xpos(x), ypos(y) {}
        friend ostream& operator<<(ostream &os, const Point* &pos); // 여기가 문제
};
ostream& operator<<(ostream &os, const Point* &pos) // 여기가 문제
{
        os<<'['<<pos->xpos<<", "<<pos->ypos<<']'<<endl;
        return os;
} // cout<< 오버로딩

~ 생략 ~

        arr[0] = new Point(3, 4);
        arr[1] = new Point(5, 6);
        arr[2] = new Point(7, 8);

        for(int i=0;i<arr.GetArrLen();i++)
        {
                cout<<arr[i]<<endl; // cout오버로딩을 해서 출력
        }
~ 생략 ~

대충 전체 코드를 설명하자면,
배열 클래스를 만들어서 거기에 클래스를 집어 넣은다음에 
cout오버로딩을 해서 출력하는 건데,
const Point* &pos 이부분에서 참조자를 빼면 정상적으로 출력이 되는데
참조자가 있으면 이상하게도 자꾸 cout오버로딩으로 들어가지 않고 주소가 출력되(아마도 arr[i]의 주소값인듯)
이거 왜그런지 몰겠어 ㅠㅠ
전체코드가 필요하다면 다시 올릴게.