(*tp)].push_back(tp): } // Выв
Автор admin Понедельник, 15 июня 2009 11:32
(*tp)].push_back(tp): } // Вывод отсортированных результатов for(TrashMap: iterator p – bin.beginO: p != bin.endO; ++p) { sumValue(*p. cout); purge(p->second): } } ///:- Теперь sumValue() вызывает функцию type_info::name() напрямую, потому что объект type_info стал доступен как первый компонент пары Trash Map: :value_type. Тем самым предотвращается лишний вызов оператора typeid для получения имени типа Trash, необходимый в предыдущей версии программы. Реализация и издержки RTTI Обычно реализация RTTI базируется на включении дополнительного указателя в таблицу виртуальных функций класса. Этот указатель ссылается на структуру type_info для этого конкретного типа. Выражение typeid() реализуется достаточно просто: по указателю на таблицу виртуальных функций производится выборка указателя на type_info, через который осуществляется доступ к структуре type_info. Поскольку операция сводится к разыменованию двух указателей, она выполняется с постоянной сложностью. Выражение йупап\к_са$1<приемник*>{указателъ_на_источник) в большинстве случаев также реализуется достаточно прямолинейно: сначала производится выборка
Комментарии закрыты.
Последние комментарии