Kann const_cast verwendet werden, um nicht konstante Versionen bereits implementierter Methoden zu erstellen? Ich denke, ich habe etwas in dieser Richtung gesehen (mit Empfehlung für die Const-Methode, um die eigentliche Arbeit zu machen), aber ich bin nicht wirklich sicher, wie es funktionieren soll.Verwenden von const_cast zum Erstellen einer nichtkonstanten Variante von Methoden
Value& const search(key) const {
// find value with key
return value;
}
Value& search(key) {
return const_cast<Value&>(search(key));
}
Wenn nicht auf diese Weise, was ist die empfohlene Methode zum Erstellen von nicht-const-Funktionen ohne Code-Duplizität?
Zuerst das Wort "Duplizität" nachschlagen. Es bedeutet nicht "Duplizierung". Ich warte .... Okay. Const wegwerfen ist etwas, das du normalerweise nur dann tust, wenn du dich in einer schlimmen Lage und gegen eine Deadline befindest. Es gibt Ausnahmen. Zum Beispiel, wenn eine Klasse einen Cache hat, der für die Öffentlichkeit transparent ist. Als const in die Sprache eingeführt wurde, gab es eine Debatte darüber, ob "const" wirklich, wirklich konstant oder "als ob" konstant bedeuten sollte. "Als ob" gewonnen und damit const geboren wurde. –
Zugehörig: https://Stackoverflow.com/q/123758/1896169 – Justin