Überwindung des Const-Rätsels für doppelte Getter
Das Dilemma entsteht, wenn Getter in Klassen mit sowohl const- als auch nicht-const-Versionen implementiert werden. Kompilierungsfehler behindern die Implementierung einer Methode mit der anderen. Darüber hinaus ist Casting erforderlich, um die const-Version aus der nicht-const-Version aufzurufen.
Eine elegante Lösung
Effective C schlägt eine unkonventionelle, aber effektive Lösung vor: Implementieren Sie das Non -const-Version durch Wegwerfen des const aus der const-Version. Obwohl dieser Ansatz ästhetisch nicht ansprechend ist, garantiert er Sicherheit, da die aufrufende Funktion nicht konstant ist. Daher ist das Wegwerfen des const vom const-Objekt zulässig.
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()); } };
Das obige ist der detaillierte Inhalt vonWie kann ich sowohl Const- als auch Non-Const-Getter effizient in C implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!