| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Втртуальность в С++ |
| Автор: sergioK1 13.6.2016, 13:32 |
| Ну есть контейнер , Я хочу написать такой же только с фунццией resize виртуальной, какие тут проблемы могут быть, |
| Автор: azesmcar 13.6.2016, 18:01 |
| не совсем понятно в чем вопрос. Какой именно контейнер? vector? Ты хочешь унаследовать контейнер или написать свой? Если наследовать, то контейнеры STL наследовать не рекомендуется, писать свой вектор я бы тоже не стал, но теоретически, при наличии склонности к изобретению велосипедов, свой полиморфный вектор написать можно |
| Автор: Alexeis 13.6.2016, 18:15 |
Увеличение размера контейнера на размер указателя на VMT, уменьшение скорости вызова функции resize за счет виртуального вызова и дополнительный расход памяти под таблицу VMT на каждую инстанциацию шаблона. Вообще, STL не использует виртуальные методы с шаблонами. Сам итератор/элемент/контейнер передается как шаблонный параметр и функции специализируются под него. Полиморфность реализуется в статике на этапе компилции, а не на этапе исполнения. Это работает немного быстрее. Динамический и статический полиморфизм это как 2е противоположные идеологии, но вместе работать будет. |
| Автор: sergioK1 13.6.2016, 21:46 | ||
Не понял пример можно |
| Автор: Alexeis 13.6.2016, 22:06 |
http://www.cplusplus.com/reference/algorithm/sort/ Сортируем любой контейнер используя итераторы. Функция одна подстраивается под любой контейнер, но не на этапе исполнения, а на этапе компиляции. |