위에 있는 add 함수는 

Shape* add(Shape* p)

{

this->add = p;

return p;

}


getNext 함수는


Shape* getNext()

{

return next; (next 변수는 Shape* next로 선언되있습니다.)

}


이렇게 되있는데 저런 코드를 링크드 리스트라고 한다더라고요.


코드 부분에서 그런데 이해가 가지 않는 부분이 몇개 있습니다.



1. pLast = pStart; 이 부분에서 pLast에 pStart를 대입했는데

왜 다시 그 밑줄에 pLast = pLast -> add(new Rect()); 이 코드가 나오는 것인가요?


이럴거면 pLast = pStart 부분은 필요없지않나요?


거기다 포인터에서 다음 포인터로 넘어가면서 상속된 클래스들을 한꺼번에 불러오는 while 구문도 이해가 안갑니다.


p = p -> getNext() 이 부분이 임시 포인터가 가리키고 있는 다음 노드의 주소값을 대입하는 부분이라는데


getNext {return Next} 고작 이런 함수로 해당 포인터에서 다음 포인터로 어떻게 넘겨준다는 형식인지 이해가 가질 않습니다.


차라리 배열 형식으로 카운터라도 하면 이해라도 가겠는데 포인터에서 다음 포인터로 가는 분기점이 정확히 어디인지 몰라서 헷갈립니다. 혹시 이거 덧글로 설명좀 해주실분 계신가요??