/* 3. ´ÙÀ½ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ½á¶ó. */ #include #define NIL (0) class Person { public: int val; Person(int v) { val = v; } virtual void doingX(Person *a,Person *b) { a->doingX(b); } virtual void doingX(Person *a) { val++; } void doingY(Person *a) { int t; t = val; val = a->val; a->val = t; } void print() { printf("%d ",val); } }; class Man : public Person { public: Man(int v) : Person(v) {} virtual void doingX(Person *a,Person *b) { val++; a->val = a->val + 1; b->val = b->val + 1; } virtual void doingX(Person *a) { doingY(a); } }; class Woman : public Person { public: Woman(int v) : Person(v) {} virtual void doingX(Person *a,Person *b) { val--; a->val = a->val - 1; b->val = b->val - 1; } virtual void doingX(Person *a) { doingY(a); } }; void main() { int data[5] = { 1, 2, 3, 4, 5 }; Person* p0 = new Person(data[0]); Woman* p1 = new Woman(data[1]); Man* p2 = new Man(data[2]); Woman* p3 = new Woman(data[3]); Man* p4 = new Man(data[4]); p0->doingX(p1,p2); p0->doingX(p3,p4); p0->print(); p1->print(); p2->print(); p3->print(); p4->print(); printf("\n"); }