Мне нужны некоторые примеры плохого кода на С++, которые иллюстрируют нарушение хороших практик. Я хотел придумать свои собственные примеры, но мне трудно придумать примеры, которые не надуманны, и где ловушка не сразу очевидна (это сложнее, чем кажется).
Примерами могут быть:
- Не задавать конструктор копирования для классов с членами
std::auto_ptr
и использоватьstd::auto_ptr
членов с классами, объявленными вперед. - Вызов виртуальных функций от конструктора или деструктора (прямо или косвенно).
- Перегрузка функции шаблона.
- Циркулярные ссылки с
boost::shared_ptr
. - нарезка.
- Выбрасывание исключений из C обратных вызовов (прямо или косвенно).
- Сравнение с плавающей точкой для равенства.
- Исключение безопасности конструкторов с необработанными указателями.
- Бросание из деструкторов.
- Целочисленное переполнение при компиляции на разных архитектурах (несоответствие
size_t
иint
). - Недействительный итератор контейнера.
... или любое другое зло, о котором вы можете думать.
Я бы оценил некоторые указатели на существующие ресурсы или образец или два.