Может это глупый вопрос, я новичок в C ++:
Я немного прочитал о механизме исключений, и в каком-то коде наткнулся на строку:
throw SomeClass();
Что это означает? Это вызов класса c'tor, а затем бросается объект этого класса?
В других примерах я видел, что "throw" всегда выбрасывает экземпляр (конкретную строку или int, и здесь я смущен, потому что знаю, что c'tor не имеет возвращаемого типа.
Я не понимаю "логики" этого выражения ...
2 ответа
Да.
В частности, это создает временный объект и выбрасывает его.
Во-первых, вы должны выбросить некоторый экземпляр, производный от std :: exception (хотя вы можете использовать целые числа, c-строки, ..., что обычно плохо). В некоторых случаях вы можете создать специальное исключение (например, std: bad_alloc).
Затем вы всегда создаете временный экземпляр (который должен быть сконструирован) путем вызова конструктора: throw SomeClass();
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.