/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
egen destructor - selv oprydning
Fra : Martin M. Pedersen


Dato : 16-08-07 10:31

Hejsa,
Jeg kan ikke helt finde ud om man selv kan rydde op, hvis man ikke
bruger den default destructor. Skal man f.x. i nedenstående simple
eksempel tage sig af vector<string> str ?

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class D {

public:
D();
~D();
friend ostream& operator<< (ostream& o, D& d);

private:
static unsigned int count;
vector<string> str;

};

unsigned int D::count=0;

D::D()
{
count++;
}


D:D()
{
count--;
}


ostream& operator<< (ostream& o, D& d)
{
cout << d.count;
}

 
 
Mogens Hansen (16-08-2007)
Kommentar
Fra : Mogens Hansen


Dato : 16-08-07 13:59


"Martin M. Pedersen" <traxplayer@gmail.com> wrote in message
news:46c41998$0$93383$edfadb0f@dread11.news.tele.dk...
> Hejsa,
> Jeg kan ikke helt finde ud om man selv kan rydde op, hvis man ikke
> bruger den default destructor. Skal man f.x. i nedenstående simple
> eksempel tage sig af vector<string> str ?

Nej - datamedlemmet "str" bliver automatisk nedlagt når det "D" objekt som
indeholder "str" bliver nedlagt.
Tilsvarende bliver den hukommelse som hvert "string" objekt som findes i
"str" automatisk blive frigivet.

Generelt skal man kune skrive "delete" hvis man (eller nogen) har skrevet
"new".
Typisk tilstræber man symmetri så ansvaret for at skrive "delete" ligger hos
den som har skrevet "new".
Det gælder f.eks. "std::vector" og "std::string" som du bruger i dit
eksempel. Begge klasser bruger (sandsynligvis) dynamisk allokering og har
dermed selv ansvaret for at rydde det op igen.

--
Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste