Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Втртуальность в С++


Автор: sergioK1 13.6.2016, 13:32
Ну есть контейнер , Я хочу написать такой же только с фунццией resize виртуальной,
какие тут  проблемы могут быть,  

Автор: azesmcar 13.6.2016, 18:01
не совсем понятно в чем вопрос.
Какой именно контейнер? vector? Ты хочешь унаследовать контейнер или написать свой? Если наследовать, то контейнеры STL наследовать не рекомендуется, писать свой вектор я бы тоже не стал, но теоретически, при наличии склонности к изобретению велосипедов, свой полиморфный вектор написать можно smile вопрос только в том - зачем?

Автор: Alexeis 13.6.2016, 18:15
Цитата(sergioK1 @  13.6.2016,  14:32 Найти цитируемый пост)
какие тут  проблемы могут быть,   

  Увеличение размера контейнера на размер указателя на VMT, уменьшение скорости вызова функции resize за счет виртуального вызова и дополнительный расход памяти под таблицу VMT на каждую инстанциацию шаблона. Вообще, STL не использует виртуальные методы с шаблонами. Сам итератор/элемент/контейнер передается как шаблонный параметр и функции специализируются под него. Полиморфность реализуется в статике на этапе компилции, а не на этапе исполнения. Это работает немного быстрее. Динамический и статический полиморфизм это как 2е противоположные идеологии, но вместе работать будет.

Автор: sergioK1 13.6.2016, 21:46
Цитата(Alexeis @ 13.6.2016,  17:15)
Сам итератор/элемент/контейнер передается как шаблонный параметр и функции специализируются под него. Полиморфность реализуется в статике на этапе компилции, а не на этапе исполнения. Это работает немного быстрее. Динамический и статический полиморфизм это как 2е противоположные идеологии, но вместе работать будет.

Не понял пример можно 

Автор: Alexeis 13.6.2016, 22:06
Цитата(sergioK1 @  13.6.2016,  22:46 Найти цитируемый пост)
Не понял пример можно  

http://www.cplusplus.com/reference/algorithm/sort/
Сортируем любой контейнер используя итераторы. Функция одна подстраивается под любой контейнер, но не на этапе исполнения, а на этапе компиляции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)