Re[8]: Задачи для собеседования.
От: m e  
Дата: 29.02.12 10:59
Оценка:
M>Если тема заинтересовала , предлагаю подумать как реализовать функционал std::vector используя typedef и абстрактные интерфейсы. Сможете ли вы провести границу в этом случае? и насколько формальной такая граница может быть ?

тема безусловно интересная

функциональность std::vector используя typedef и абстрактные интерфейсы не сделать, если у нас нет настоящего параметрического полиморфизма как скажем в скале (или на худой конец в яве; еще и имплициты как в скале могут потребоваться для хорошего качества) или шаблонов (как в с++)

известные варианты без ПП -- это

1. коллекции из потомков Object-а, при доставании элемента требуется даункаст

2. интрузивные коллекции -- элементу, чтобы класться в коллекцию, требуется наследование от чего-то-там

но решения по поводу "а как реально программировать log_destination" лежит немного в стороне от этих важных моментов

если бы с++ был бы хорошим языком, то там бы не было проблемы "делать хорошо или, наоборот, делать быстро, удобно и понятно даже последнему юниору"; а в с++ эта проблема есть, так что приходится выбирать

скажем, мы выбрали хорошо (как сделаны потоки или std::vector) -- а как в таком случае, позвольте спросить, передать в функцию f пару std::vector<T*> так, что T *неизвестен*, но гарантированно *одинаков* у обоих векторов? и какая сигнатура будет у функции f? вот тут-то мы вспомни про старый добрый void*, слегка прикрытый шаблонами, или не вспомним, а?

так что я не зря говорю про традиции
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.