Kiedy uruchamia się destruktor
Ostatnio zmodyfikowano 2015-10-18 15:50
ast44 Temat założony przez niniejszego użytkownika |
Kiedy uruchamia się destruktor » 2015-10-15 16:27:05 Mam takie nieoczywiste dla mnie pytanie, kiedy właściwie uruchamia się destruktor.Konstruktor przy inicjalizacji i to widać w kodzie.Natomiast nie bardzo widzę jak jest z destruktorem (zwłaszcza że klasa nie musi go posiadać i on sam jej nie usuwa tylko jest wywoływany przy usuwaniu instancji).Zrobiłem sobie jakąś klasę i w jej destruktorze powiedziałem żeby coś tam wypisywał.Stworzyłem np: dwa obiekty i odpaliłem kod.Widzę że destruktory tych obiektów wywołują się na samym końcu.Potem stworzyłem jakąś funkcję i ją wywołałem.I tak samo widać że destruktory wywołują się na samym końcu.Więc czy to jest zasada, że destruktory zawsze (o ile ich samodzielnie w jakiś sposób nie wywołamy) wywołują się na samym końcu ,już po wykonaniu się wszystkiego ? |
|
C-Objective |
» 2015-10-15 16:42:14 class klasa { klasa() { printf( "uruchomiono konstruktorek" ); } ~klasa() { printf( "uruchomiono destruktorek" ); } } main() { klasa * test = new klasa(); delete test; return 0; }
|
|
mateczek |
» 2015-10-15 16:48:15 #include<iostream> using namespace std; class klasa { public: klasa() { cout << "uruchomiono konstruktor" << endl; } ~klasa() { cout << "uruchomiono destruktor" << endl; } }; int main() { klasa * test = new klasa(); cout << "1" << endl; delete test; cout << "2" << endl; { cout << "3" << endl; klasa test2; } cout << "4" << endl; }
uruchomiono konstruktor 1 uruchomiono destruktor 2 3 uruchomiono konstruktor uruchomiono destruktor 4
więc nie wiem czy to będzie odpowiedź w 100% przypadków prawdziwa ale destruktor jest odpalany na końcu klamry "}" lub gdy wywołamy go ręcznie!!! np za pomocą operatora delete. |
|
C-Objective |
» 2015-10-18 15:50:56 Tzn. w tedy kiedy jest niszczony. |
|
« 1 » |