/* 4. ´ÙÀ½ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ½á¶ó. */ #include class X { public: X(int x) { } void foo() { printf("1 "); } virtual void goo() { printf("1 "); } }; class Y : public X { public: Y(int y) : X(y) { } void foo() { printf("2 "); } virtual void goo() { printf("2 "); } }; class Z : public X { public: Z(int z) : X(z) { } void foo() { printf("3 "); } virtual void goo() { printf("3 "); } }; void main() { int data[5] = { 1, 2, 3, 4, 5 }; X *p[5]; for(int i = 0; i < 5; i++) { if (data[i] < 4) { p[i] = new Y(data[i]); } else if (data[i] < 7) { p[i] = new X(data[i]); } else { p[i] = new Z(data[i]); } } for(int i = 0; i < 5; i++) { p[i]->foo(); } printf("\n"); for(int i = 0; i < 5; i++) { p[i]->goo(); } printf("\n"); }