cout « “not a Investment” « e
Автор admin
Воскресенье, 14 июня 2009 11:32
cout « “not a Investment” « endl; } cout « “cast from intermediate pointer:” « endl: Security* sp – new Metal: Investment* cp – dynamic_cast(sp): if(cp) cout « ” it’s an Investment” « endl: Metal* mp – dynamic_cast(sp); if(mp) cout « ” it’s a Metal too!” « endl: purge(portfolio): } ///:- Эта программа гораздо короче, потому что большая часть кода исходного примера содержала избыточные проверки преобразований. Целевой тип dynamic_cast указывается в угловых скобках, как и для остальных новых операторов преобразований типов С++ (static_cast и т. д.), а преобразуемый объект передается в виде операнда. Чтобы понижающие преобразования были безопасными, оператор dynamic_cast требует, чтобы используемые типы были полиморфными1, то есть содержали как минимум одну виртуальную функцию. К счастью, в базовом классе Security имеется виртуальный деструктор, поэтому нам не придется вставлять лишнюю функцию. Так как оператор dynamic_cast работает на стадии выполнения, используя таблицу виртуальных функций, он обычно требует больших издержек, чем остальные новые операторы преобразования типов. Опе
Комментарии закрыты.
Последние комментарии