거의 2년만에 강석민 강사님의 강의를 다시 듣게 되었습니다.
역시 설명을 참 잘하신다는 느낌을 받았습니다~

그럼... 갈길이 멀기 때문에 바로 정리작업을 들어가겠습니다.(이미 내머리속에 지우개가 발동하고 있습니다..ㅠ)

첫번째 시간에는 객체지향 디자인을 하기 전에 기본적인 c++의 문법을 배웠습니다.

Up casting : "부모 포인터(참조)로 자식객체의 주소를 담을 수 있다" 라는 개념입니다.
장점1. 동종(동일부모의 자식)을 저장하는 collection을 만들 수 있다.
장점2. 동종을 처리하는 함수를 만들 수 있다.

즉, 자식 클래스가 무엇인지 몰라도 동일한 일을 하기 위해서 부모클래스를 가지고 일을 할 수 있다는 말입니다.
나중에 다형성개념이 있을 수 있는 것이  Upcasting이 가능하기 때문인것입니다. (곧, 다형성이 나오니 걱정마세요..)


#include 
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...
}
 
 
NewYear에서는 Dog의 객체를 받기를 기대 하시만, Dog의 부모인 Animal이 와도 된다는 의미 입니다.
((__