Уничтожение лок. переменных!!!???
От: avch  
Дата: 03.10.03 08:16
Оценка:
Привет всем!!!
Вот такой код в VC6 билдится да еще и без ошибок RT выполняется:

#include <iostream.h>

class C1 {
public:
    C1() {};
    void F1() { cout << "C1.F1()\n"; };
 ~C1() { cout << "~C1()\n"; };
};

class C2 {
public:
     C1 c1; 
     C2()  {};
  ~C2() {};
};

void NullC1(C2& c2)
{
    C1 c1;
    c2.c1 = c1;
};

int main(void) {
    C2 c2;
    c2.c1.~C1(); <-------------------+
    NullC1(c2);                  +
    c2.c1.F1();                  +
     return 0;                    +
};                                   +
+
и выдает такое: +
~C1() // c этим вроде все понятно --+
~C1() // и с этим вроде тоже (вызывается компилом при выходе из NullC1() )
C1.F1() // по моему бред какойто, ведь с1 уже нет, выходит что конструктор и деструктор это простые
// процедуры или я что-то непонимаю???
~C1() // тоже самое
_____________________
Заранее благодарен за ответ....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.