zauważyłem, że QMap::operator[](const Key & key)
ma te dwie overloads:Dlaczego QMap :: operator [] (const Key & key) zwraca wartość?
T & QMap::operator[](const Key & key)
const T QMap::operator[](const Key & key) const
Czy istnieje powód do powrotu przez wartość?
A ponieważ mamy semantyki ruch:
po powrocie przez wartość, powinny kiedykolwiek wrócimy przez wartość const?
Powodem dlaczego pytam jest to:
Wyobraź mamy:
class ExpensiveToCopy;
{
public:
int someProperty() const;
...
}
void f(const QMap<int, ExpensiveToCopy>& map)
{
int lala = map[4].someProperty(); // We need to copy the entire object
// just to look at someProperty();
}
Tylko * jeden * przeciążenie zwraca wartość, drugi zwraca referencję. –
@ Joachim Tak, to jest to, czego nie rozumiem. Czy nie powinny one zwracać odwołania, jak na przykład std :: vector :: operator []? –
@nurettin it * does * inhibituje semantykę ruchu. – juanchopanza