Я не уверен, что все, что испытывает всех основных функции. Их много, и некоторые из них редко используются вместе (шаблоны и виртуальные функции приходят на ум.Оба достигают формы полиморфизма, поэтому вы часто используете тот или иной вариант в зависимости от ваших потребностей.)
Подходящий проект, в котором он касался всех важных функций, может быть чем-то , по-видимому прост как написать правильный класс контейнера, аналогичный std :: vector или std :: list. Обеспечьте безопасность исключений, действительность итератора, соответствующую временную сложность для всех операций и любое другое требование, указанное в стандарте.
Проблема с этим, а также с большинством других проектов заключается в том, что вы не будете знать, когда все будет готово. Создание изменчивого массива может занимать 50 строк кода и 20 минут вашего времени. И тогда начинающий подумает, что он закончил. Для обеспечения исключительной безопасности вам необходимо определить все места, где класс может быть исключен из состояния несогласованности.
Это своего рода общая проблема с C++. Довольно легко думаю, вы его получите, и компилятор, конечно, не уведомит вас о тех аспектах, которые вы забыли обработать. Таким образом, вы можете подумать, что ваш код идеален, и все же он будет разбиваться на всевозможные нечетные специальные случаи.
Как сказал sharptooth, для языка, такого же грязного, как C++, писать код сам по себе является рискованным. Легко попасть в ловушку «Я написал код, он компилируется и кажется запущенным, поэтому он правильный». Конечно, вы можете опубликовать свой код здесь или на других сайтах для ознакомления или, может быть, просто дополнить свое кодирование, прочитав документы для актуального высококачественного кода на C++ (большинство библиотек с большей интенсивностью, как правило, имеют исчерпывающую документацию, в которой указаны как обоснование различных дизайнерских решений , и как он безопасно обрабатывает все странные особые случаи, которые имеют тенденцию возникать на C++. Конечно, сам стандарт C++ был бы еще одним отличным ресурсом. В любом случае это может помочь вам определить, какие проблемы нужно искать)
-1 Он также может изучать вредные привычки на рабочем месте. Что делать, если у него уже есть работа? Нет причин, по которым он не может учиться сам. –
+1 отсюда. Конечно, вы также можете изучать вредные привычки на рабочем месте, но, по крайней мере, есть шанс на то, что вы тоже столкнетесь с хорошими привычками. Если вы не знаете тонкости языка и сами пишете код, вы просто не заметите ошибок, которые возникают. – jalf
Изучение C++ только путем написания кода и тестирования - это рецепт для 1) вредных привычек и 2) багги кода. Он работает очень хорошо на более жестких языках, где вы можете предположить, что если ваш код компилируется, он четко определен и легален. В C++ программист должен уметь самостоятельно выявлять эти проблемы. – jalf