Cześć wszystkim.
Mam klasę TablicaD
zawierającą alokowaną dynamicznie tablicę liczb typu double
(więcej o całym programie pisałem w temacie tutaj http://4programmers.net/Forum/C_i_C++/213337-przeciazenia_operatorow_dla_klas?start=0).
Konstruktor kopiujący wygląda następująco (definicja):
TablicaD::TablicaD(const TablicaD & wzor) : licznik(wzor.licznik), rozmiar(wzor.rozmiar),
srednia(wzor.srednia), nazwa_obiektu(wzor.nazwa_obiektu)
{
cout << "\n********Dziala konstruktor kopiujacy **********\n";
wtab = new double[rozmiar];
for(int i=0; i<rozmiar; i++) // petla kopiujaca zawartosc tablicy do tablicy w nowym obiekcie
{
wtab[i] = wzor.wtab[i];
}
nazwa_obiektu += ".SKOPIOWANY";
}
Zawartości tablic ładnie się kopiują, jednak zaraz po zakończeniu jego działania uruchamia się destruktor (tak jest zawsze? po co on się w ogóle uruchamia po zakończeniu pracy konstruktora kopiującego i co niszczy?) i program wywala błąd:
Unhandled exception at 0x5ED44F98 (msvcr110d.dll) in lab4.exe: 0xC0000005: Access violation reading location 0xCCCCCCC0.
W czym problem ?