Исключения(exception) и вызов деструкторов
От: Аноним  
Дата: 01.08.02 12:46
Оценка:
В этом варианте при возникновение исключения вызывается деструктор статического класса, но если я убираю строку "cout <<"XZ\n"<<endl;" (в ф-ии f1() ), то вызова этого деструктора не вижу.
#include "stdafx.h"
#include <iostream.h>

void f1();
class Ctest
{
    
    public:
        int iType; // 1- heap ; 2- stack
        Ctest(int _iType): iType(_iType) { cout << "test "<<iType<< "\n"<<endl; }
        ~Ctest() { cout <<"~test "<<iType<< "\n"<<endl;    }

};

int main(int argc, char* argv[])
{

    try 
    //__try 
    {    
        printf("start __try\n");
        f1(); // - âíåé áóäåò èñêëþ÷åíèå
        printf("end __try\n");
    } 
    catch(...)
    //__except (EXCEPTION_EXECUTE_HANDLER)
    { 
        printf("__except\n");
    } 

    printf("end example\n");
    return 0;
}

void f1()
{
    Ctest Ct2(2);// 2- stack
    
    //cout <<"XZ\n"<<endl;    

    DWORD dw=0;
    dw = 5/dw;
    DWORD *pdw=0; *pdw=1;

    printf("end f1\n");
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.