Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

12пми / Абстактный классЖивотные

.cpp
Скачиваний:
28
Добавлен:
02.06.2015
Размер:
1.41 Кб
Скачать

#include <iostream>
using namespace std;
//абстрактный базовый класс
class Animal
{
public:
char *Title; //кличка животного
Animal(char *t) {Title=t;} //простой конструктор
virtual void speak(void)=0; //чистая виртуальная функция
};

//класс лягушка
class Frog: public Animal
{
public:
Frog(char *Title): Animal(Title) { };
virtual void speak(void) { cout<<Title<<" говорит "<<"'ква-ква'"<<endl; };
};

//класс собака
class Dog: public Animal
{
public:
Dog(char *Title): Animal(Title) { };
virtual void speak(void) { cout<<Title<<" говорит "<<"'гав-гав'"<<endl;};
};

//класс кошка
class Cat: public Animal
{
public:
Cat(char *Title): Animal(Title) { };
virtual void speak(void) { cout<<Title<<" говорит "<<"'мяу-мяу'"<<endl;};
};

//класс лев
class Lion: public Cat
{
public:
Lion(char *Title): Cat(Title) { };
virtual void speak(void) { cout<<Title<<" говорит "<<"'ррр-ррр'"<<endl;};
// virtual int speak(void) { cout<<Title<<" говорит "<<"'ррр-ррр'"<<endl; return 0;};
// virtual void speak(int When) { cout<<Title<<" говорит "<<"'ооа-ооу'"<<endl; };
};


int main ()
{
//объявим массив указателей на базовый класс Animal
//и сразу его заполним указателями, создавая объекты
Animal *animals[4] = { new Dog("Бобик"),
new Cat("Мурка"),
new Frog("Кермит"),
new Lion("Кинг")}; // cписок животных

for(int k=0; k<4; k++) animals[k]->speak();
return 0;
}
Соседние файлы в папке 12пми