私はQMap::operator[](const Key & key)
を持っていることに気づいたこれら2 overloads:QMap :: operator [](const Key&key)が値で返されるのはなぜですか?
T & QMap::operator[](const Key & key)
const T QMap::operator[](const Key & key) const
値で返すための理由がありますか?
そして、私たちは移動の意味を持っているので:
値で返すときに、私たちが今までconstの値で返す必要があり?
私が求めていた理由はこれです:
想像して、私たちは持っている:それはまだ存在していない場合const
場合
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();
}
値で* one *オーバーロードのみが返され、もう一方は参照を返します。 –
@ヨアヒムはい、それは私が理解していないことです。彼らは、例えば、std :: vector :: operator []のような参照を返すべきではありませんか? –
@nurettin it * doesはmove semanticsを禁止します。 – juanchopanza