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