Если вы задумывались над тем, как реализован вызов виртуальных методов, то вероятно пришли к выводу, что в процессе выполнения программы известен точный класс каждого объекта. Это действительно так.
Информация о типе объекта в некоторых случаях очень полезна и для программиста. Наиболее употребительным способом получения такой информации являются операторы is и as.
Пусть имеется ссылка R на TObject или какой–нибудь другой класс, от которого порождены многочисленные и разнообразные потомки. Если объект принадлежит ветви TA семейства потомков, то к нему нужно применить операцию R.DoA, если к TB, то — R.DoB, а если к любой другой, то не нужно делать ничего. Как установить генеалогию объекта? Вот соответствующий код:
R is TA является логическим выражением. Если ссылка R указывает на объект класса TA или любой его потомок, то выражение примет значение TRUE. Если вы ожидаете, что R принадлежит семейству TA, то можно поступить проще: (R as TA).DoA;
В отличие от TA(R).DoA, оператор as проверит, принадлежит ли объект семейству TA и в случае успеха вызовет нужный метод. Если объект не окажется членом семейства, то возникнет исключительная ситуация, об обработке которых говорится ниже.
Опубликовал Kest
June 14 2011 10:53:34 ·
0 Комментариев ·
14036 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.