Zdobywanie zasobów poprzez inicjalizację

0

Witam!

Mam pytanie - na czym polega technika zdobywania zasobów oprzez inicjalizację w C++ ?

0

Tak na szybko to masz konstruktor danej klasy i przekazujesz do niego jakiś zasób:

class klasa {
    int* ptr;
public:
    klasa(int* _ptr): ptr(_ptr)
    {}

    ~klasa
    {
         delete *ptr;
    }
};

.
.
.
klasa K(new int(10));

Jesteś potem odpowiedzialny z jego zwolnienie.

0
DzieX napisał(a)

Jesteś potem odpowiedzialny z jego zwolnienie.

No nie calkiem bym sie zgodzil. Osoba odpowiedzialna za zwolnienie pamieci powinna byc ta, ktora ta pamiec przydzielila.
Jesli z powyzszej klasy ja korzystam i przydzielam pamiec przed deklaracja zmiennej typu klasa, to bardziej odpowiednia implementacja bylaby taka, ktora zrzucala by na mnie obowiazek zwolnienia pamieci. Powiedzmy, ze chcialbym po wywolaniu destruktora jeszcze wykorzystac jakos ten wskaznik z danymi wstawionymi w klasie... i co wtedy ? :)

0

Hmm, sorki w takim razie. Myślałem, że zdobycie polega na oddaniu jakis danych "pod opiekę" obiektu :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1