Zwalnianie tablicy obiektów
Ostatnio zmodyfikowano 2014-01-21 13:04
Duninho Temat założony przez niniejszego użytkownika |
Zwalnianie tablicy obiektów » 2014-01-21 11:31:09 #include <iostream>
using namespace std;
class TData { private: string m_imie; string m_nazwisko; int m_wiek; public: TData( string imie, string nazwisko, int wiek ) : m_imie( imie ) , m_nazwisko( nazwisko ) , m_wiek( wiek ) { } ~TData() { } string get_imie() { return m_imie; } string get_nazwisko() { return m_nazwisko; } int get_wiek() { return m_wiek; } };
int main() { string temp_imie; string temp_nazwisko; int temp_wiek; TData * tablica[ 2 ]; for( int i = 0; i < 2; i++ ) { cin.clear(); cin.sync(); cout << "Dane nr. " << i + 1 << endl; cout << "1. Podaj imie: "; getline( cin, temp_imie ); cout << "2. Podaj nazwisko: "; getline( cin, temp_nazwisko ); cout << "3. Podaj wiek: "; cin >> temp_wiek; cout << endl; tablica[ i ] = new TData( temp_imie, temp_nazwisko, temp_wiek ); } cout << "Lista danych:" << endl; for( int i = 0; i < 2; i++ ) { cout << "Dane nr. " << i + 1 << endl; cout << "1. Imie: " << tablica[ i ]->get_imie() << endl; cout << "2. Nazwisko: " << tablica[ i ]->get_nazwisko() << endl; cout << "3. Wiek: " << tablica[ i ]->get_wiek() << endl << endl; } delete[] tablica; for( int i = 0; i < 2; i++ ) { cout << "Dane nr. " << i + 1 << endl; cout << "1. Imie: " << tablica[ i ]->get_imie() << endl; cout << "2. Nazwisko: " << tablica[ i ]->get_nazwisko() << endl; cout << "3. Wiek: " << tablica[ i ]->get_wiek() << endl << endl; } return 0; }
Mógłby ktoś mądrzejszy ode mnie mi wytłumaczyć dlaczego po zwolnieniu tablicy mam wciąż dostęp do obiektów jej pól? |
|
Monika90 |
» 2014-01-21 13:04:30 Zachowanie programu jest niezdefiniowane więc może się stać cokolwiek. Poza tym, zwalniasz tylko tablicę, a nie zwalniasz obiektów klasy TData. |
|
« 1 » |