646 Часть IV. Новые возможности C++
Д определяемые пользователем классы и структуры. Заметим, что это правило не отметает классы, являющиеся частью стандартной библиотеки C++.
Использование операции dynamic_cast
Листинг 23.2 демонстрирует использование операции dynamic_cast. Вам, разумеется, придется реализовать это средство языка для более серьезных приложений. Программа моделирует приготовление салата и предназначена для демонстрационных целей. Обратите внимание на операцию dynamic_casi-
В функции Processlngredient ().
ftinclude <iostream.h>
«
//Некоторые необходимые определения typedef enum {
WHOLE,
SHREDDED,
GRATED,
SLICED,
CHOPPED } FoodState;
// Вершина дерева наследования
class Food (
public:
// Конструктор
Food(const FoodState = WHOLE);
// Виртуальные методы — все продукты должны иметь возможность // устанавливать и возвращать свое состояние. // Эти функции обеспечивают также полиморфность // класса Food и возможность использования RTTI. virtual FoodState GetStatef) const;
virtual void SetState(const FoodState);
private:
// Закрытые данные-члены
FoodState theFoodState;
);
// Конструктор Food
Food::Food(const FoodState newState)
{
SetState(newState);
}