Есть такая штука:
class FileException {
...
public:
FileException(const char*);
virtual void report() {cout<<"0\n";};
};
class FileCloseException : public FileException {
....
public:
FileCloseException(const char* f) : FileException(f) {};
void report() {cout<<"1\n";};
};
class FileWriteException : public FileException {
....
public:
FileWriteException(const char* fn, FILE* f) : FileException(fn)
{if (fclose(f)) throw FileCloseException(fn);};
void report() {cout<< "2\n";};
};
Собственно интересно что будет если я генерирую FileWriteException а оно в своем конструкторе сгенерирует FileCloseException? Как сработает такой блок:
try
{ bad_func();
} catch (FileWriteException& e) {
e->report();
} catch (FileCloseException& e) {
e->report();
}
Что я увижу на экране?