// ÁÖ°£¿ë 3¹ø ¹®Á¦ #include #define NIL (0) class Person { public: int val; Person(int v) { val = v; } virtual void doingX(Person *a,Person *b,Person *c = NIL,Person *d = NIL) = 0; void print() { printf("%d\n",val); } }; class Man : public Person { public: Man(int v) : Person(v) {} virtual void doingX(Person *a,Person *b,Person *c = NIL,Person *d = NIL) { a->val = a->val + 2; b->val = b->val + 2; if (c != NIL) { c->doingX(this,a); } } }; class Woman : public Person { public: Woman(int v) : Person(v) {} virtual void doingX(Person *a,Person *b,Person *c = NIL,Person *d = NIL) { a->val = a->val - 1; b->val = b->val - 1; if (c != NIL) { c->doingX(this,a); } } }; void main() { int data[5] = { 0, 1, 2, 3, 4 }; Man* p0 = new Man(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,p3,p4); p0->print(); p1->print(); p2->print(); p3->print(); p4->print(); }