Heim > Backend-Entwicklung > C++ > Wie kann ich doppelte Getter für Const- und Non-Const-Mitgliedsfunktionen in C vermeiden?

Wie kann ich doppelte Getter für Const- und Non-Const-Mitgliedsfunktionen in C vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-02 11:42:16
Original
323 Leute haben es durchsucht

How Can I Avoid Duplicate Getters for Const and Non-Const Member Functions in C  ?

Elegante Lösung zum Duplizieren von Gettern für konstante und nicht konstante Objekte

Beim Umgang mit Gettern in C stehen Entwickler oft vor dem Dilemma, sie zu haben um separate Implementierungen für konstante und nicht konstante Versionen zu erstellen. Dies kann unpraktisch sein, wenn die Logik für beide Getter weitgehend ähnlich ist.

Eine mögliche Lösung für dieses Problem besteht darin, die Nicht-Konstanten-Version zu implementieren, indem die Konstante aus der Konstanten-Version entfernt wird. Dieser Ansatz gilt als sicher, da die aufrufende Funktion nicht konstant ist, was bedeutet, dass das Objekt selbst nicht konstant ist, was die Konvertierung ermöglicht.

Zum Beispiel:

class Foo
{
public:
    const int& get() const
    {
        //non-trivial work
        return foo;
    }

    int& get()
    {
        return const_cast<int&>(const_cast<const Foo*>(this)->get());
    }
};
Nach dem Login kopieren

Dieser Ansatz mag ästhetisch nicht ansprechend sein, garantiert aber Sicherheit und macht in vielen Fällen separate Implementierungen überflüssig. Es ermöglicht Entwicklern, sich auf die Kernfunktionalität der Getter zu konzentrieren, anstatt Code zu duplizieren.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Getter für Const- und Non-Const-Mitgliedsfunktionen in C vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage