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

Zwalnianie tablicy obiektów

Ostatnio zmodyfikowano 2014-01-21 13:04
Autor Wiadomość
Duninho
Temat założony przez niniejszego użytkownika
Zwalnianie tablicy obiektów
» 2014-01-21 11:31:09
C/C++
#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?
P-102698
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.
P-102703
« 1 »
  Strona 1 z 1