Hej, mam drobne pytanie. Być może banalne. Proszę o nakierowanie.
W pewnej klasie o nazwie Klasa_zbiorcza (w jej konstruktorze) tworzę sobie tablicę obiektów:
Klasa_zbiorcza::Klasa_zbiorcza (int liczba_objektow)
{
cout<<("przed construktorem tablicy Obiektow")<<endl;
klasa_zbiorcza = new Objekt [liczba_objektow];
cout<<("za construktorem tablicy Obiektow")<<endl;
}
w pliku .h mam oczywiście:
class Klasa_zbiorcza
{
Objekt *klasa_zbiorcza;
public:
void wyswietl_Klase_zbiorcza();
// constructor
Klasa_zbiorcza();
// destructor
~Klasa_zbiorcza();
};
Każdy z Obiektów w sobie również tworzy pewien obiekt. Nazwijmy go Objekt_2.
Objekt::Objekt()
{
Objekt_2 objekt_2_1;
}
main:
cout << "Hello world!" << endl;
Klasa_zbiorcza klasa_zbiorcza_1(5);
cout<<("stworzylem tablice Obiektów")<<endl;
klasa_zbiorcza.wyswietl_Objekty();
cout<<"Koncze program"<<endl;
I teraz pytanie:
Dlaczego po stworzeniu tablicy Obiektów wywołuje się destruktor Obiektów_2 ?
Wydawało mi się, że kolejno każdy Obiekt_2 zostanie usunięty przed samym usunięciem każdego z Obiektów.
Nie ma tu dziedziczenia. Jest swego rodzaju incepcja :D. Tablica klasa zbiorcza ma w sobie 5 Obiektów. Każdy z Obiektów ma w sobie po jednym Obiekt_2.
Konsola:
Hello world!
przed construktorem tablicy Objektow (tych bez "2")
Usuwam Objekt_2
Usuwam Objekt_2
Usuwam Objekt_2
Usuwam Objekt_2
Usuwam Objekt_2
za construktorem tablicy Objektow (tych bez "2")
stworzylem tablice Obiektów
Objekt0] x =1
Objekt[1] x=1
Objekt[2] x =1
Objekt[3] x =1
Objekt[4] x =1
Koncze program
Usuwam Obiekt
Usuwam Obiekt
Usuwam Obiekt
Usuwam Obiekt
Usuwam Obiekt
Starałem się umieścić najważniejsze fragmenty kodu. Mam nadzieję że coś widać :D
Pozdrowionka!
grzesiek51114