Ich habe festgestellt, dass die QMap::operator[](const Key & key)
diese beiden Überladungen :
Gibt es einen Grund für die Rückgabe nach Wert?
Und da wir eine Bewegungssemantik haben:
Wenn wir nach Wert zurückgeben, sollten wir jemals einen konstanten Wert zurückgeben?
Der Grund, warum ich frage, ist dies:
Stellen Sie sich vor, wir haben:
%Vor% Im Fall const
können wir der const
-Karte kein Element hinzufügen, wenn es nicht bereits existiert, daher wird ein lokales Objekt zurückgegeben.
Andernfalls wird in dem Fall nicht const
ein Element mit dem angegebenen Schlüssel erstellt (falls es noch keinen gibt), bevor ein Verweis darauf zurückgegeben wird.
Im Fall const
können wir der map
-Karte kein Element hinzufügen, wenn es nicht bereits existiert, daher wird ein lokales Objekt zurückgegeben.
Andernfalls wird in dem Fall nicht const_cast<ExpensiveToCopy>map[4]
ein Element mit dem angegebenen Schlüssel erstellt (falls es noch keinen gibt), bevor ein Verweis darauf zurückgegeben wird.
Ich denke, die Nicht-Referenz map[4]
soll sicherstellen, dass der Client-Code map[4]
auf keine Weise ändern kann. Sie wissen, wenn Sie map
oder andere Möglichkeiten verwenden, können wir weiterhin %code% ändern, aber diese %code% ist keine Referenz auf das vierte Element von %code% .
Ich habe festgestellt, dass die %code% diese beiden Überladungen :
%Vor%Gibt es einen Grund für die Rückgabe nach Wert?
Und da wir eine Bewegungssemantik haben:
Wenn wir nach Wert zurückgeben, sollten wir jemals einen konstanten Wert zurückgeben?
Der Grund, warum ich frage, ist dies:
Stellen Sie sich vor, wir haben:
%Vor%