거의 2년만에 강석민 강사님의 강의를 다시 듣게 되었습니다.
역시 설명을 참 잘하신다는 느낌을 받았습니다~
그럼... 갈길이 멀기 때문에 바로 정리작업을 들어가겠습니다.(이미 내머리속에 지우개가 발동하고 있습니다..ㅠ)
첫번째 시간에는 객체지향 디자인을 하기 전에 기본적인 c++의 문법을 배웠습니다.
Up casting : "부모 포인터(참조)로 자식객체의 주소를 담을 수 있다" 라는 개념입니다.
장점1. 동종(동일부모의 자식)을 저장하는 collection을 만들 수 있다.
장점2. 동종을 처리하는 함수를 만들 수 있다.
즉, 자식 클래스가 무엇인지 몰라도 동일한 일을 하기 위해서 부모클래스를 가지고 일을 할 수 있다는 말입니다.
나중에 다형성개념이 있을 수 있는 것이 Upcasting이 가능하기 때문인것입니다. (곧, 다형성이 나오니 걱정마세요..)
#includeNewYear에서는 Dog의 객체를 받기를 기대 하시만, Dog의 부모인 Animal이 와도 된다는 의미 입니다.using namespace std; class Animal { public: void Cry() {} int age; }; class Dog : public Animal {}; class Cat : public Animal {}; void NewYear( Dog* p ) { ++(p->age); } int main() { Dog* woori[100]; Animal a; foo(&a); Dog d; foo(&d); // ok... }
((__