Здравствуйте Аноним, Вы писали:
А>В этом варианте при возникновение исключения вызывается деструктор статического класса, но если я убираю строку "cout <<"XZ\n"<<endl;" (в ф-ии f1() ), то вызова этого деструктора не вижу.
Насколько я понимаю работу исключений в VC6, это связано с тем, что если компилятор не видит генерации C++-исключений, то он и не создает код, который отвечает за размотку стека при исключениях.
Когда ты добавляешь вызов cout << "XZ", то компилятор видит, что в данном блоке может возникнуть C++-исключение, поэтому надо сгенерировать код "размотки".
P.S. Деление на ноль — это не C++-исключение, это "машинное" исключение, которое для программы и компилятора является полной неожиданностью в run-time, а на этапе компиляции его не видно.