1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//Листинг #1 Виртуальные функции Динамический полиморфизм /*КЛАСС-РОДИТЕЛЬ*/ class Mammal { public: virtual void Speak() {cout<<"Mammal Speak\n";} //Виртуальный метод. Звук неизвестного млекопитающего }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Dog:public Mammal { public: void Speak() {cout << "GavGav\n";} //Виртуальный метод. Собака лает }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Cat:public Mammal { public: void Speak() {cout << "Meow\n";} //Виртуальный метод. Кот мяукает }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Pig:public Mammal { public: void Speak() {cout << "HruHru\n";} //Виртуальный метод. Свинья хрюкает }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
//Листинг #2 Borland C++ 3.1 Виртульные функции Динамический полиморфизм #include <iostream.h> #include <stdlib.h> /*КЛАСС-РОДИТЕЛЬ*/ class Mammal { public: virtual void Speak() {cout << "Mammal Speak\n";} //Виртуальный метод. Звук неизвестного млекопитающего }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Dog:public Mammal { public: void Speak() {cout << "GavGav\n";} //Виртуальный метод. Собака лает }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Cat:public Mammal { public: void Speak() {cout<<"Meow\n";} //Виртуальный метод. Кот мяукает }; /*СОЗДАЕМ ПОДКЛАСС МЛЕКОПИТАЮЩЕГО*/ class Pig:public Mammal { public: void Speak() {cout << "HruHru\n";} //Виртуальный метод. Свинья хрюкает }; /*==================*/ int main() { system("CLS"); Mammal *Array[5]; //Объявляем массив указателей на класс Млекопитающие Mammal *ptr; //Объявили указатель на класс Млекопитающие int MyWibor; //Переменная для выбора пользователем //Небольшое украшательство cout << "Выбери млекопитающее: \n"; cout << "1 - СОБАКАn"; cout << "2 - КОШКАn"; cout << "3 - СВИНЬЯ\n\n"; //С помощью цикла заполняем массив указателями на объекты for (int i=0; i<5; i++) //Пусть млекопитающих пять { cout << i+1 << ". "; //Номер текущего млекопитающего cin >> MyWibor; //Пользователь вводит число switch (MyWibor) //Основываясь на введенном числе выделяем память для нужного млекопитающего { case 1: ptr = new Dog; //Если один - выделяем память для создания класса Собака break; case 2: ptr = new Cat; //Если два - выделяем память для создания класса Кошка break; case 3: ptr = new Pig; //Если три - выделяем память для создания класса Свинья break; default: ptr = new Mammal; //Если что-то другое - выделяем память для создания класса Млекопитающее break; }//switch Выбор сделан Array[i] = ptr; //Выбор сделан, память выделена, заносим указатель на созданный объект в массив } //Цикл for завершен for (i=0; i<5; i++) Array[i]->Speak(); //Проходим по всему циклу и вызываем метод Speak для каждого элемента for (i=0; i<5; i++) delete Array[i]; //Мы выделяли память, значит нужно её освободить. cin.get(); cin.get(); } |
Спасибо, мне статья понравилась и пример доступный. Сайт добавлю в закладки)
У вас везде написано
а надо
Т мне не понятно зачем массив на
5 элементов? Ведь в нулевой мы ничего не записываем?А красоту можно и так навести.
Поправил все косяки.