646 Часть IV. Новые возможности C++

Д определяемые пользователем классы и структуры. Заметим, что это правило не отметает классы, являющиеся частью стандартной библиотеки C++.

Использование операции dynamic_cast

Листинг 23.2 демонстрирует использование операции dynamic_cast. Вам, разумеется, придется реализовать это средство языка для более серьезных приложений. Программа моделирует приготовление салата и предназначена для демонстрационных целей. Обратите внимание на операцию dynamic_casi-

В функции Processlngredient ().

h06461.jpg

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);

}