Avatar billede nicklasw Nybegynder
15. december 2009 - 15:06 Der er 7 kommentarer og
1 løsning

Forskellen mellem :: . og ->

Hej.
Det egentligt et meget simpelt spørgsmål. Hvis man tilgår en klasse hvad er forskellen i mellem :: og . og ->

Mvh.
Nicklas Jacobsen
Avatar billede arne_v Ekspert
15. december 2009 - 15:34 #1
klassenavn::statiskmetode();

instansafklasse.ikkestatiskmetode();

pointertilinstansafklasse->ikkestatiskmetode();
Avatar billede nicklasw Nybegynder
15. december 2009 - 15:39 #2
Jeg tror jeg forstår. Du kunne vil ikke komme med et eksempel? Det okay hvis det er pseudo kode.
Avatar billede arne_v Ekspert
15. december 2009 - 15:45 #3
Fra lageret:

#include <iostream>

using namespace std;

class C
{
    private:
        static int clsfld;
        int insfld;
    public:
        static void SetClsFld(int v);
        static int GetClsFld();
        void SetInsFld(int v);
        int GetInsFld();
};

int C::clsfld;

void C::SetClsFld(int v)
{
    clsfld = v;
}

int C::GetClsFld()
{
    return clsfld;
}

void C::SetInsFld(int v)
{
    insfld = v;
}

int C::GetInsFld()
{
    return insfld;
}

int main()
{
    C::SetClsFld(77);
    cout << C::GetClsFld() << endl;
    C o;
    o.SetInsFld(88);
    cout << o.GetInsFld() << endl;
    C *p = new C();
    p->SetInsFld(99);
    cout << p->GetInsFld() << endl;
    delete p;
    return 0;
}
Avatar billede nicklasw Nybegynder
17. december 2009 - 13:46 #4
Tak du kan bare lægge et svar.
Men lige et tillægsspørgsmål.

Hvornår har man brug for at lave en pointer til en instance af en klasse, isteden for bare at lave en instance af en klasse, og når man så har brug for en pointer, så lave en klasse pointer = *instance_klasse?
Avatar billede arne_v Ekspert
17. december 2009 - 14:58 #5
svar
Avatar billede arne_v Ekspert
17. december 2009 - 15:01 #6
I hvad nogen kalder "moderne" C++ forsoeger man ogsaa at undgaa alt for meget brug af pointer.

Eksempel paa hvor det ikke kan undgaaes: man skal have sine instanser lagt ind i en data struktur hvor man skal pege paa andre instanser.

Eksempel paa hvor det er praktisk: hvis en klasse skal indeholde andre klasser er det ofte nemmere at have pointere til de andre klasser fremfor klasserne selv p.g.a. kravene til initailisering i constructor.
Avatar billede nicklasw Nybegynder
18. december 2009 - 08:31 #7
Tusind tak.
Hvad er de præcise krav til initailisering i en constructor?
Avatar billede arne_v Ekspert
18. december 2009 - 14:54 #8
Hvis du har en klasse som indeholder andre klasser (ikke som pointer) skal de andre klassers constructor kaldes i klassens constructor paa samme maade som basis klassers constructor.
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