Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65275

[C++] Pytanie o życie destruktora

$
0
0

Mam pytanie dotyczące czasu istnienia destruktora w klasie.

Do moich testów stworzyłem kod:

#include <iostream>
#include <vector>

using namespace std;
class Klasa;

std::vector <Klasa *> tab;

class Klasa
{
public:
   int x;
   void foo() { delete this; }
   Klasa(){ x = 5; }
   ~Klasa()
   {
      cout<<"Niszczenie... x = "<<x<<endl;
   }
};

int main()
{
   for(std::size_t i = 0;i<3;i++)
      tab.push_back(new Klasa);

   tab[1]->foo();
   
   cout<<"tab[1]->x wynosi: "<<tab[1]->x<<endl<<endl;

   cout<<"Destruktory:"<<endl;
   for(std::size_t i = 0;i<3;i++)
      delete tab[i];
   return 0;
}

I zauważyłem pewien problem: mimo, że usunąłem obiekt (przez delete this) jego destruktor nadal żyje (spodziewałem się crashu aplikacji(odwołanie do nieistniejącego obiektu)), lecz składowe klasy są już inne.

Moje pytanie brzmi:

Czy używając delete this zwalniam pamięć oraz dlaczego destruktor nadal "żyje"?


Viewing all articles
Browse latest Browse all 65275

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>