C++ Academy · Lektion

this-pekaren och inkapsling

Använd this-pekaren och upprätthåll inkapsling med private- och public-åtkomst

Lektion 4 av 413 steg

this-pekaren och inkapsling är en gratis lektion i C++ Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för C++ Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C++ Academy innehåller totalt 4 lektioner.

Vad är detta?

Inuti en icke-statisk medlemsfunktion är this en implicit pekare till det aktuella objektet. Använd den för att undanröja tvetydighet eller returnera referenser.

class Counter {
    int n_ = 0;
public:
    Counter& add(int x) {
        n_ += x;       // implicit this
        return *this;  // chain calls
    }
};

Implicit åtkomst

Vanligtvis behöver Ni inte skriva this->. Medlemsnamn slås upp automatiskt – this->n_ och n_ är likvärdiga.

När this-> krävs

Använd this-> när en parameter skuggar en medlem eller när malluppslagning behöver hjälp med att hitta ärvda medlemmar.

class Person {
    std::string name_;
public:
    void setName(const std::string& name) {
        this->name_ = name;  // or name_ = name;
    }
};

Returnera *this för kedjning

Returnera *this för att stödja flytande gränssnitt.

class StringBuilder {
    std::string s_;
public:
    StringBuilder& append(const std::string& part) {
        s_ += part;
        return *this;
    }
};

StringBuilder sb;
sb.append("Hello, ").append("World!");

this i const-metoder

Inuti en const-metod har this typen const ClassName*. Ni kan inte ändra medlemmar via den.

Inkapsling: grundidén

Inkapsling innebär att dölja internt tillstånd och endast exponera säkra åtgärder. Gör data privat och exponera avsiktliga offentliga metoder.

class Stack {
    std::vector<int> data_;     // hidden
public:
    void push(int v) { data_.push_back(v); }
    int  pop()       { int v = data_.back(); data_.pop_back(); return v; }
    bool empty() const { return data_.empty(); }
};

Varför använda inkapsling?

Inkapsling låter Er:

  • Ändra den interna representationen utan att bryta anropande kod
  • Upprätthålla invarians på ett enda ställe
  • Validera indata vid gränsen
  • Resonera lokalt om objektets tillstånd

Offentligt gränssnitt = kontrakt

Det offentliga gränssnittet är ett löfte till den anropande koden. Håll det litet, avsiktligt och stabilt. Gör implementeringsdetaljer privata.

Getters och setters

Ett vanligt mönster, men lätt att överanvända. Undvik att spegla varje medlem med get/set – det motverkar inkapsling. Exponera åtgärder, inte fält.

Const-korrekthet igen

Markera alla skrivskyddade metoder med const. Då vet den anropande koden vilka metoder som kan anropas säkert på const-instanser, och kompilatorn upprätthåller detta.

Vänfunktioner och vänklasser

Nyckelordet friend ger en annan funktion eller klass åtkomst till privata medlemmar. Använd det sparsamt – det ökar kopplingen.

class Account {
    double balance_;
    friend void transfer(Account& a, Account& b, double amount);
};

Snabbkontroll

Vilken typ har this inuti en metod som deklarerats som void f() const i klassen Foo?

Sammanfattning

this pekar på det aktuella objektet inuti icke-statiska metoder. Använd den för kedjning (return *this) och för att undanröja tvetydighet. Inkapsla tillstånd med privata data och ett litet, avsiktligt offentligt gränssnitt.

Gratis att börja

Lär dig C++ med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”this-pekaren och inkapsling” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen C++ Academy, inklusive ”this-pekaren och inkapsling”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i C++ Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”this-pekaren och inkapsling”?

Använd this-pekaren och upprätthåll inkapsling med private- och public-åtkomst Ni övar på C++ Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C++ Academy?

Du behöver inga förkunskaper. Utbildningen i C++ Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”this-pekaren och inkapsling”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C++ Academy-lektionen?

Ja. Varje C++ Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. struct jämfört med class: när används de
  2. Medlemsvariabler och metoder
  3. Konstruktorer och medlemsinitieringslistor
  4. this-pekaren och inkapsling
← Tillbaka till C++ Academy