Млекопитающее
Собака
Кошка
Лошадь
Человек
120 |
С т р а н и ц а
virtual void talk()
{
cout << "
Млекопитающее говорит… подмените эту функцию!" << endl;
}
//
Чистая виртуальная функция, (объясняется ниже)
virtual void walk() = 0;
};
//
Следующая строка говорит "класс Собака наследуется от класса Млекопитающее"
class Dog : public Mammal // :
двоеточие используется для наследования
{
public:
Dog()
{
cout << "
Собака родилась!" << endl;
} ~
Dog()
{
cout << "
Собака ушла в мир иной" << endl;
}
virtual void talk() override
{
cout << "
Гав!" << endl; // собаки говорят только гав!
}
//
осуществление ходьбы для собаки
virtual void walk() override
{
cout << "
Левая передняя лапа и задняя правая лапа, правая передняя лапа и левая
задняя лапа… со скоростью" << speed << endl;
}
};
class Cat : public Mammal //
класс Кошка наследуется от класса Млекопитающее
{
public:
Cat()
{
cout << "
Кошка родилась" << endl;
}
~Cat()
{
cout << "
Кошка ушла в мир иной" << endl;
}
virtual void talk() override
{
cout << "
Мяу!" << endl;
}
//
осуществление ходьбы для кошки… такое же как и для собаки!
virtual void walk() override
{
cout << "
Левая передняя лапа и задняя правая лапа, правая передняя лапа и левая
задняя лапа… со скоростью " << speed << endl;
}
};
class Human : public Mammal //
класс Человек наследуется от класса Млекопитающее
{
121 |
С т р а н и ц а
//
Уникальный элемент данных для Человека (в отличии от других Млекопитающих)
bool civilized;
public:
Human()
{
cout << "
Новый человек родился" << endl;
speed = 2.0; //
меняем скорость. Так как конструктор класса-потомка
//
запускается после конструктора базового класса,
//
устанавливаются специальные для этого класса
// переменные-члены
civilized = true;
}
~Human()
{
cout << "
Человек ушёл в мир иной" << endl;
}
virtual void talk() override
{
cout << "
Я хорошо выгляжу для... человека" << endl;
}
//
осуществление ходьбы для человека..
virtual void walk() override
{
cout << "
Левой, правой, левой, правой со скоростью " << speed << endl;
}
//
функция-член уникальна для производного человек
void attack( Human & other )
{
//
Человек не будет нападать, если он цивилизован
if( civilized )
cout << "
Почему один человек должен нападать на другого? Я отказываюсь" << endl;
else
cout << "
Человек нападает на другого!" << endl;
}
};
int main()
{
Human human;
human.breathe(); //
для дыхания используется функционал базового класса Млекопитающее
human.talk();
human.walk();
Cat cat;
cat.breathe(); //
для дыхания используется функционал базового класса Млекопитающее
cat.talk();
cat.walk();
Dog dog;
dog.breathe();
dog.talk();
dog.walk();
}
Собака, Кошка и Человек, все наследуются от класса Млекопитающее. Это значит,
что собака, кошка и человек являются млекопитающими, и даже больше.
122 |
С т р а н и ц а
Достарыңызбен бөлісу: |