Стандартная библиотека c ++ разработана, чтобы быть эффективной, она по возможности избегает ненужных проверок во время выполнения.
1 Содержит нарушения предварительных условий для очень маленьких / быстрых методов, проверка этих предварительных условий, скорее всего, займет больше времени, чем выполнение самих методов (pop - это, скорее всего, один декремент в стеке простых типов).
2 dynamic_cast проверяет и приводит указанный указатель к совместимому типу. Не существует отдельного способа проверки только того, возможно ли приведение, поскольку оно должно выполнять ту же работу, что и приведение. Поскольку c ++ не предоставляет отдельного способа только проверять, возможно ли приведение, мы должны ожидать, что оно может дать сбой, и у него есть хорошее значение ошибки, которое можно использовать при сбое (NULL). Эталонная версия должна выдать исключение, поскольку она не может вернуть значение ошибки.
3 substr гарантирует исключение, это может быть по двум причинам. Первый: метод substr немного сложнее и медленнее, чем методы, упомянутые в 1, и поэтому накладные расходы на проверку предусловия незначительны. Второе: обработка строк является одним из основных факторов, влияющих на дыры в безопасности, поскольку вы, скорее всего, обрабатываете ввод данных пользователем, для обеспечения безопасности / стабильности процесса необходима проверка на переполнение или доступ через границы. Библиотека c предоставляет быстрые, непроверенные и небезопасные методы для работы со строками для тех, кому нужна скорость.
4 new должен проверить, может ли он вернуть адрес или дать сбой в обоих случаях, так как нехватка памяти неожиданна для большинства приложений, исключение является разумным. Однако вы можете писать на С ++, используя небольшое подмножество его функций, и многие проекты не используют исключения, так как сделать безопасным исключение для вашего кода сложно (особенно если вы используете сторонние библиотеки, которых нет), так как new является центральной частью c ++ и реализация без исключений становится необходимой.