Usuwanie obiektów klas
Ostatnio zmodyfikowano 2014-05-22 23:47
Arteliar Temat założony przez niniejszego użytkownika |
Usuwanie obiektów klas » 2014-05-22 23:25:12 Siemka! Ostatnio zastanawia mnie usuwanie obiektów klasy bez użycia wskaźników, new i delete. Naskrobałem sobie coś takiego: class Klasa { public: Kill() { delete this; } }
int main() { Klasa object; object.Kill(); return 0; }
I odpaliłem i wygląda, że działa. Sprawdziłem sobie w ten sposób, że po wywołaniu funkcji Kill spróbowałem jeszcze raz odnieść się przez coś tam do obiektu. I wtedy sypie się tak samo, jak w próbie kontrolnej(z użyciem wskaźników, new i delete). I teraz pytanie czy to jest dobrze i można tego używać? Czy raczej coś namieszałem solidnie? |
|
Monika90 |
» 2014-05-22 23:28:27 delete jest tylko dla obiektów stworzonych za pomocą new. |
|
Arteliar Temat założony przez niniejszego użytkownika |
» 2014-05-22 23:32:02 Czyli, że w taki sposób jak napisałem mogę sobie usuwać utworzone obiekty? |
|
Monika90 |
» 2014-05-22 23:34:49 delete jest tylko dla obiektów stworzonych za pomocą new. Czy w twoim kodzie jest gdzieś wywołanie operatora new? |
|
Arteliar Temat założony przez niniejszego użytkownika |
» 2014-05-22 23:40:31 Nie, nie mam. Ale gdzieś czytałem, że obiekty można usuwać tylko poprzez wskaźnik i delete. I dlatego pytam, czy mogę działać bez wywoływania new i delete i usuwać obiekty poprzez moją funkcję. |
|
Monika90 |
» 2014-05-22 23:47:32 No to Ci piszę po raz trzeci, że nie możesz za pomocą delete usunąć obiektu automatycznego utworzonego na stosie, czyli takiego jak obiekt object tutaj: int main() { Klasa object; object.Kill(); }
co innego jakbyś zrobił tak: int main() { Klasa * p = new Klasa; p->Kill(); }
|
|
« 1 » |