Avatar billede thomas_nj Nybegynder
06. januar 2006 - 23:33 Der er 3 kommentarer og
1 løsning

Ryde op efter vector

Hej ekspterter

  Jeg sidder og er lidt i tvivl om noget. Hvis jeg i en class har en vector som jeg i constructoren fylder op skal jeg så ryde op efter den på en eller anden måde i destructoren?
Avatar billede arne_v Ekspert
06. januar 2006 - 23:50 #1
hvis den klasse indeholder en vector (ikke en pointer til en vector)
og den indeholder ikke pointere så skal du ikke gøre noget i destructor

hvis din vector er dynamisk allokeret eller den indeholder dynamisk
allokerede objekter så skal du gøre noget i din destructor
Avatar billede thomas_nj Nybegynder
07. januar 2006 - 12:43 #2
ok, kom bare lige i tvivl. arne_v>> Gider du ikke lige smide et svar?
Avatar billede arne_v Ekspert
07. januar 2006 - 12:49 #3
gerne
Avatar billede arne_v Ekspert
07. januar 2006 - 12:50 #4
et illustrativt eksempel:

#include <iostream>
#include <vector>

using namespace std;

class C
{
    private:
        int v;
    public:
        C(int v) { this->v = v; };
        C(const C& c) { this->v = c.v; cout << v << " duplicated" << endl; };
        ~C() { cout << v << " going away" << endl; };
};

class V1
{
    private:
        vector<C> v;
    public:
        V1() { C o1(1); v.push_back(o1); C o2(2); v.push_back(o2); };
};

class V2
{
    private:
        vector<C*> v;
    public:
        V2() { v.push_back(new C(3)); v.push_back(new C(4)); };
};

class V3
{
    private:
        vector<C*> v;
    public:
        V3() { v.push_back(new C(5)); v.push_back(new C(6)); };
        ~V3() { delete v[1]; delete v[0]; };
};

int main()
{
    V1 o1;
    V2 o2;
    V3 o3;
    return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester