실습숙제2 재공지

실습숙제2 재공지
실습숙제2에서 2_CPerson.zip을 새로 다운로드 받아서 작성하도록 함
-CPersonManager 클래스는 private 멤버로 CList<CPerson, CPerson&> m_aPersonList를 가지는 것이 아니라 CList<CPerson*, CPerson*> m_aPersonList를 가짐
-그래야, CList에 데이터가 CPerson이나 CStudent이나 CFaculty이라해도 그 데이터형에 맞는 Show함수를 부를 수 있음.
-만약, CList<CPerson, CPerson&>으로 하면 CPerson이나 CStudent이나 CFaculty의 데이터형에 상관없이 모두 CPerson의 Show를 부르게 됨.

-차이점 예시


  CArray<Point, Point&> arr1;
  arr1.Add(Point(10,20));
  arr1.Add(Point(30,40));
  arr1.Add(Point3D(4,5,6));
  arr1.Add(Point3D(7,8,9));
  cout << endl << “CArray<Point, Point&> 출력 Loop by index:” << endl;
  for(int i = 0; i < arr1.GetSize(); i++) {
   arr1[i].Show(); // dynamic binding이 안됨
  }

출력결과:
CArray<Point, Point&> 출력 Loop by index:
X= 10 Y= 20
X= 30 Y= 40
X= 4 Y= 5
X= 7 Y= 8




  CArray<Point*, Point*> arr2;
  arr2.Add(new Point(10,20));
  arr2.Add(new Point(30,40));
  arr2.Add(new Point3D(4,5,6));
  arr2.Add(new Point3D(7,8,9));

  cout << endl << “CArray<Point*, Point*> 출력 Loop by index:” << endl;
  for(int i = 0; i < arr2.GetSize(); i++) {
   Point * pt = arr2[i];
   pt->Show();         // dynamic binding
  }

출력결과:
CArray<Point*, Point*> 출력 Loop by index:
X= 10 Y= 20
X= 30 Y= 40
X=4 Y=5 Z=6
X=7 Y=8 Z=9

Leave a Reply

Your email address will not be published. Required fields are marked *