Введение в тест по темплейтам в C++
Многи программы на C++ используют одни и те же базовые структуры данных, такие как очереди (queue), стеки (stack), списки (list). Но в одной программе в таких структурах хранятся сообщения, в другой - объект товара, в третьей - объект публикации и так далее.
Темплейты в C++ позволяют создать обобщенную структуру данных, например очередь Queue<T> с параметризируемым типом T. Ну а затем T может быть заменено на любой конкретный тип данных.
C++ templates предоставляют мощную возможность для повторного использования кода и потому очень часто используются при разработке ПО.
В C++ поддерживаются 2 вида темплейтов - темплейты классов (class templates) и темплейты функций (function templates). Тест C++ Templates посвящен обоим видам темплейтов в Си++.
На ряду с прохождением теста рекомендуем к прочтению следующие статьи:
Целевая аудитория теста C++ templates
Данный тест достаточно сложный и рекомендуется к прохождению программистам со значительным опытом разработки программного обеспечения.
Перед прохождением теста по темплейтам необходимо обратится к более простым тестам по C и C++, таким как C основы, C++ основы, тест ООП в C++.
Наверное самый важный тест, на который стоит обратить внимание перед переходом к тесту по темплейтам - это Тест C++ среднего уровня. В этом тесте уже встречаются вопросы и по темплейтам (template), и по функциям (function), и по классам (class).
Структура теста C++ темплейты
Вопросы данного теста по C++ посвящены использованию темплейтов как на уровне функций, так и на уровне классов.
В тесте содержатся вопросы и теоретического и практического характера. Естественно, практические вопросы преобладают.
Если у Вас есть замечания по поводу вопросов теста, пишите нам или оставляйте комментарии.
Дальнейшее развитие теста по C++ темплейтам
Время от времени тест будет пополнятся новыми вопросами.
Так как тема темплейтов в C++ достаточно специализированная, необходимо будет принять решение о разбиении вопросов теста на тематики.
Ждем Ваших отзывов касательно теста.
2) Порядок вычисления операндов оператора сложения не определён. Это значит, что выражение
соut<<f<int>()*100 + f<сhаr>()*10 + f<int>()<<еndl;
может быть вычислено несколькими путями; и один из возможных вариантов - сначала вычислить правое f<int>(), потом вычислить левое f<int>, потом умножить результат левого f<int>() на 100 и т.д. Очевидно, результатом в таком случае будет 211, а не 112 (что у вас считается якобы единственно правильным ответом).
Насчёт второго - почитав стандарт был удивлён.
cout<<A<B,C>::value<<A<B,B>::value<<A<C,B>::value;
В самом вопросе помимо темплейтов затрагивается вопрос о выводе bool, порядке выполнения операций. Лично у меня он занял много времени, но я конечно не профи. Опять же расчет, как я понимаю, такой: по минуте на каждый вопрос.
ПС: все это - мое ИМХО.