Нельзя выбрасывать исключение из такой функции?
В Eclipse это работает ...
Так это правда? и мы можем бросить внутренний объект в метании исключений?можно ли исключить внутреннее исключение объекта из функции
class Bad {
int i;
public:
void what() { cout << "exp" << i; }
};
class A {
public:
void f() {
Bad e;
throw e;
} // e are deleted by d'tor?
};
int main() {
A a;
try {
a.f();
} catch (Bad& e) // What happen here? we catch reference to some object that
// was deleted by Bad dt'or
{
cout << "in catch";
e.what(); // what happen here?
}
return 0;
}
Совершенно очевидно, что это не дубликат, @ bames53. –
Работает идентично 'return e;' вместо того, чтобы возвращать локальный, создает копию. – Vladp
@LightnessRacesinOrbit Мне кажется довольно ясно, что это дубликат. http://stackoverflow.com/questions/1860064/catching-exception-objects-by-reference-temporaries-lifetime-issues. Оба вопроса задают вопрос о том, как возможно, что объект, который будет уничтожен при выходе из области, может быть пойман по ссылке, потому что не должна ли эта ссылка быть недействительной в этот момент? – bames53