|
|
 |
|
|
|
|
24: {
25: public:
26: Dog() { cout << Dog constructor\n; }
27: virtual ~Dog() { cout << Dog destructor\n; }
28: Dog (const Dog & rhs);
29: void Speak()const { cout << Woof!\n; }
30: virtual Mammal* Clone() { return new Dog(*this); }
31: };
32:
33: Dog::Dog(const Dog & rhs):
34: Mammal(rhs)
35: {
36: cout << Dog copy constructor\n;
37: }
38:
39: class Cat : public Mammal
40: {
41: public:
42: Cat() { cout << Cat constructor\n; }
43: virtual ~Cat() { cout << Cat destructor\n; }
44: Cat (const Cat &);
45: void Speak()const { cout << Meow!\n; }
46: virtual Mammal* Clone() { return new Cat(*this); }
47: };
48:
49: Cat::Cat(const Cat & rhs):
50: Mammal(rhs)
51: {
52: cout << Cat copy constructor\n;
53: }
54:
55: enum ANIMALS { MAMMAL, DOG, CAT};
56: const int NumAnimalTypes = 3;
57: int main()
58: {
59: Mammal *theArray[NumAnimalTypes];
60: Mammal* ptr;
61: int choice,i;
62: for (i = 0; i<NumAnimalTypes; i++)
63: {
64: cout << (1)dog (2)cat (3)Mammal: ;
65: cin >> choice;
66: switch (choice)
67: {
68: case DOG: ptr = new Dog;
69: break;
70: case CAT: ptr = new Cat;
71: break;
72: default: ptr = new Mammal;
|
|
|
|
 |
|
|
|
|
continues |
|
|
|
|
|