×Закрыть

Тест по С++ для обучения в Nix Solutions

Привет всем! Может тут есть кто-то, кто проходил обучение iOS, или С++ в Nix Solution. Поделитесь, плиз, инфой по поводу тестирования: какого рода были вопросы, на что обратить внимание при подготовке и т.д

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Всім привіт. Будь ласка пройдіть дане опитування, мені потрібна дані для дослідження з предмету теорія ймовірності мат статистика Марковський веде. Я студент КПІ, ФІОТ, кафедра ОТ. Від опитування залежить чи буде допуск до екзамену у мого напарника. Це наше дослідження на + бали
goo.gl/forms/7PLZu5A1ovq1wX973

ромбовидное наследование и эксепшены в деструкторе

Ты по аккуратнее с таким предложениями, так и подавиться спросонья можно.

А чего, годные темы. Достаточно Философию С++ Эккеля проштудировать и любое тестирование можно пройти.

Только по первому в коде юзать нужно почти никогда. А за юзание второго просто бить того, кто написал такое.
Для джуна первое проще запретить писать.

За что бить-то? В редких случаях (ещё раз: в редких случаях; я ни в коем случае не утверждаю, что это хорошо и стоит использовать повсеместно) бывает довольно удобно.

Например, сделать класс какого-то вспомогательного scoped объекта, который накапливает данные для осуществления какой-то большой операции, а в своём деструкторе «коммитит» результаты (с возможностью вываливания эксепшена, если что-то пойдёт не так).

В целом вопрос «в каких случаях можно бросить эксепшен из деструктора» может быть довольно уместным.
1) Если деструктор вызвался уже во время раскуртки стека после вылета другого эксепшена — нефиг пытаться что-либо коммитить. На этот случай в стандартной библиотеке предусмотрена функция std::uncaught_exceptions, которую и стоит вызвать в самом начале выполнения этого деструктора. Другой эксепшен был — ничего не делаем, пусть стек раскручивается дальше. Друогого эксепшена не было — пытаемся «коммитить» и запасаемся попкорном на случай, если что-то вылетит непосредственно из процедуры коммита.
2) Такой деструктор должен быть обозначен noexcept(false), ибо по дефолту там стоит обратное (unless деструктор одного из полей класса уже обозначен noexcept(false)).

Для одноразового кода годиться всё. Не одноразовый придется другим читать и поддерживать.

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

И в IDE он спецом выделяется красным цветом и большими буквами. Правильно?

Не видел такого.
Да и зачем это? Пометки noexcept(false) возле деструктора вполне достаточно, чтобы был понятен тот факт, что из него может вылететь исключение.

Возможность такая в большинстве IDE есть (но ее искать надо). Недостаточно, люди внимательностью не отличаются.

Ну, у нас пока потребности искать не было. То ли вы переоцениваете ужасность таких деструкторов, то ли именно на нашем проекте люди такие нетипично внимательные. То ли это просто неважно: вылетел эксепшен и вылетел, значит что-то пошло не так (по не зависящим от этого куска кода обстоятельствам); а откуда именно он вылетел (то ли из явного вызова некой функции, то ли или из деструктора, который что-то «коммитит» автоматически) — в данном контексте роли не играет.

Я б краще порадив Маєрса: www.e-reading.club/book.php?book=1002058
Ці теми і багато інших охоплені, а води набагато менше і більш структуровано.

только Страуструп, только хардкор!

Страуструп — справочник про всё и вся. Майерс — советы по конкретным моментам языка. Так что в не ироничном контексте Майерс определённо выигрывает.

Страуструп — справочник про всё и вся.

сам Страуструп говорил, что он с++ знает гдето на 7-8 из 10

Естественно. Если говорить про standardese формулировки. Но они никому не нужны, кроме разработчиков компиляторов, оптимизаторов и прочих таких штук.

А для всех остальных книга Страуструпа будет неплохим справочником. Если кому-то вообще нужны эти справочники, когда есть cppreference.

У Страуструпа написано еще, как всё это применять.

Ну да, сравнивая книгу Страуструпа с cppreference я чутка утрировал.
Мой поинт был в том, что книги Майерса лучше разжёвывают подводные камни языка: что, как и почему стоит применять в тех или иных обстоятельствах. И на их фоне «The C++ Programming Language» Страуструпа выглядит больше как справочник, чем как учебник.

Если человек вообще не знает C++ и хочет разобраться с нуля, то этот «справочник» будет читаться сравнительно тяжело.
А если уже знает основы (которые можно выучить по любой другой книжке вроде Праты или Дейтелов) — может смело приступать к Майерсу. Конечно, имея cplusplus.com или cppreference под рукой, чтоб находить инфу про отдельные фичи std, которые могли не упоминаться в книге для начинающих.

Именно, поэтому и нужен Страуструп или его аналог, после Майерс и

cppreference

, как справочник.

Каждому своё.
Я в своё время «The C++ Programming Language» Страуструпа пропустил, основы выучил по Прате (подглядывая в референс, если что-то недопонимал), затем приступил к Майерсу и Саттеру. Уже после этого полистал Страуструпа и понял, что ничего особо не пропустил.
Не спорю, что можно было учиться и по нему. Как одна из опций. Но не как какой-то мастхев — в отличие от того же Майерса, которому, на мой взгляд, альтернатив нет.

Да. Я по Страуструпу учил в свое время. Но «Танцы с бубном» от Майерса обязательны, но у него уже разбор конкретных типичных ситуаций.
Ну и Джосатиса с Вандервудом желательно понять для С++.

Подписаться на комментарии