Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Usuwanie obiektów klas

Ostatnio zmodyfikowano 2014-05-22 23:47
Autor Wiadomość
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:

C/C++
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?
P-110689
Monika90
» 2014-05-22 23:28:27
delete jest tylko dla obiektów stworzonych za pomocą new.
P-110690
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?
P-110694
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?
P-110696
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ę.
P-110698
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:
C/C++
int main()
{
    Klasa object;
    object.Kill();
}

co innego jakbyś zrobił tak:
C/C++
int main()
{
    Klasa * p = new Klasa;
    p->Kill();
}
P-110700
« 1 »
  Strona 1 z 1