Темы, которые касаются не только тестов, IT и Quizful, вы можете создавать в новом разделе Обсуждения.

Вдобавок, появилась возможность комментировать профиль пользователя на странице профиля.

Надеемся, эти нововведения Вам понравятся.
Знаете ли Вы, что

Индивидуальный рейтинг по категориям можно просмотреть на странице с профилем.

Топ контрибуторов
loading
loading
Статистика

Тестов: 127, вопросов: 5126. Пройдено: 54989 / 186427.

Тест знаний C++ Templates

Вам необходимо зарегистрироваться и войти в систему для прохождения тестов.
head tail Информация о тесте
категория
C++
пройден260 из 1025
вопросов в тесте12 из 26
требуется0.0 Q
сертификационныйнет
в рейтинге да
время15 минут
авторanalizer
head tail Модераторы
 k06a  

Введение в тест по темплейтам в 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++ достаточно специализированная, необходимо будет принять решение о разбиении вопросов теста на тематики.

Ждем Ваших отзывов касательно теста.


Важно: Ниже обсуждается только тест в целом: покрытие тематик, типы вопросов, пути улучшения теста и так далее.

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

Комментариев: 11
 wdefik14.03.2010 | 14:38:36
спасибо :)
ответить
 user0x0121.06.2009 | 15:19:28
1) П. 14.3.1/2 стандарта гласит: "A local type, a type with no linkage, an unnamed type or a type compounded from any of these types shall not be used as a template-argument for a template type-parameter." Ваш "правильный" ответ на вопрос "Параметром шаблона может быть..." как минимум спорный.

2) Порядок вычисления операндов оператора сложения не определён. Это значит, что выражение

соut<<f<int>()*100 + f<сhаr>()*10 + f<int>()<<еndl;

может быть вычислено несколькими путями; и один из возможных вариантов - сначала вычислить правое f<int>(), потом вычислить левое f<int>, потом умножить результат левого f<int>() на 100 и т.д. Очевидно, результатом в таком случае будет 211, а не 112 (что у вас считается якобы единственно правильным ответом).
ответить
 analizer22.06.2009 | 12:48:03
Спасибо, поправил.
Насчёт второго - почитав стандарт был удивлён.
ответить
 MTWizard08.09.2009 | 14:12:36
Поддержу user0x01 со 2м пунктом. Ваш "правильный" ответ неверен. Советую разбить одно выражение на несколько и вывести, например, их сумму.
ответить
 analizer08.09.2009 | 15:08:08
Уважаемый некропостер, вы вообще читали мой ответ? Данный вопрос уже два с лишним месяца как исправлен и теперь принимает два варианта ответа, которыми исчерпываются все правильные ответы на данный вопрос.
ответить
 ymax25.03.2009 | 16:00:18
Тест хороший и нужный. Но местами перемудрено (на пару вопросов уходит почти все отведенное время).
ответить
 analizer25.03.2009 | 19:18:31
Какие например? В принципе я и рассчитывал что над некоторыми вопросами думать придётся, но именно думать, а не дебажить в уме :-)
ответить
 ymax26.03.2009 | 18:27:47
Например, вопрос с такой строкой:

cout<<A<B,C>::value<<A<B,B>::value<<A<C,B>::value;

В самом вопросе помимо темплейтов затрагивается вопрос о выводе bool, порядке выполнения операций. Лично у меня он занял много времени, но я конечно не профи. Опять же расчет, как я понимаю, такой: по минуте на каждый вопрос.

ПС: все это - мое ИМХО.
ответить
 analizer27.03.2009 | 10:57:40
Вопрос о выводе bool - согласен, человек не работавший с std::cout может попасть в затруднение. А вот порядок выполнения операций (вернее вывода на экран) - это очевидно, имхо. К тому же можно просто запомнить что в с/с++ всё делается слева направо (ну или почти всё :-) - но это тема для отдельного вопроса)
ответить
 test7722.03.2009 | 17:44:51
Спасибо за тест. Узнал много интересного.
ответить
 SadSido22.03.2009 | 10:26:27
Хороший тест. Спасибо за комментарии к вопросам, а то некоторые ответы вызвали удивление :) Хороший вопрос от А.Александреску про шаблон проверки наследования :)
ответить
Добавить комментарий