Heim >Backend-Entwicklung >C++ >Wie können wir doppelte Const- und Non-Const-Getter-Methoden ordnungsgemäß verarbeiten?

Wie können wir doppelte Const- und Non-Const-Getter-Methoden ordnungsgemäß verarbeiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-04 00:39:09626Durchsuche

How Can We Gracefully Handle Duplicate Const and Non-Const Getter Methods?

Anmutiger Umgang mit Duplikat-, Const- und Non-Const-Gettern

Als Programmierer stoßen wir oft auf das Problem, sowohl Const als auch Non-Const zu haben -const-Versionen von Getter-Methoden in unseren Klassen. Während die separate Implementierung zu Codeduplizierung führen kann, kann es eine Herausforderung sein, eine elegante Lösung für dieses Rätsel zu finden.

Die Herausforderung

Im bereitgestellten Beispiel benötigt die Klasse Foobar zwei getSomething()-Methoden: eine nicht konstante (Something& getSomething(int index)) und eine konstante (const Something& getSomething(int index) const). Der Versuch, diese Methoden mit den anderen zu implementieren, führt jedoch unweigerlich zu Compilerfehlern. Das Umwandeln der Nicht-Const-Version aus der Const-Version ist ebenfalls ein notwendiges Übel.

Die elegante Lösung

Obwohl eine absolut makellose Lösung möglicherweise nicht machbar ist, ist dies am häufigsten der Fall Der empfohlene Ansatz besteht darin, die Konstante von der anderen Funktion zu entfernen. Obwohl es nicht gerade ästhetisch ansprechend ist, ist es eine sichere Technik, da die aufrufende Mitgliedsfunktion nicht konstant ist, was bedeutet, dass das Objekt selbst nicht konstant ist und das Wegwerfen der Konstante zulässig ist.

Betrachten Sie den folgenden Codeausschnitt als 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());
    }
};

In diesem Beispiel verwirft die Nicht-Const-Version von get() die Const aus der Const-Version, sodass sie das Objekt ändern kann selbst.

Das obige ist der detaillierte Inhalt vonWie können wir doppelte Const- und Non-Const-Getter-Methoden ordnungsgemäß verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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