Может это глупый вопрос, я новичок в C ++:

Я немного прочитал о механизме исключений, и в каком-то коде наткнулся на строку:

throw SomeClass();

Что это означает? Это вызов класса c'tor, а затем бросается объект этого класса?

В других примерах я видел, что "throw" всегда выбрасывает экземпляр (конкретную строку или int, и здесь я смущен, потому что знаю, что c'tor не имеет возвращаемого типа.

Я не понимаю "логики" этого выражения ...

0
Day_Dreamer 4 Фев 2015 в 23:29

2 ответа

Лучший ответ

Да.

В частности, это создает временный объект и выбрасывает его.

1
Quentin 4 Фев 2015 в 20:38

Во-первых, вы должны выбросить некоторый экземпляр, производный от std :: exception (хотя вы можете использовать целые числа, c-строки, ..., что обычно плохо). В некоторых случаях вы можете создать специальное исключение (например, std: bad_alloc).

Затем вы всегда создаете временный экземпляр (который должен быть сконструирован) путем вызова конструктора: throw SomeClass();

0
user2249683user2249683 4 Фев 2015 в 20:46