template <typename T>
void QVector<T>::append(const T &t)
{
const T copy(t);
const bool isTooSmall = uint(d->size + 1) > d->alloc;
if (!isDetached() || isTooSmall) {
QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default);
reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt);
}
if (QTypeInfo<T>::isComplex)
new (d->end()) T(copy);
else
*d->end() = copy;
++d->size;
}
Jaki jest powód, aby const T copy(t)
zamiast podania t
przez wartość do metody? Jaka jest różnica między tym a:QVector :: append() jaki jest powód jawnego kopiowania?
template <typename T>
void QVector<T>::append(const T t)
{
const bool isTooSmall = uint(d->size + 1) > d->alloc;
if (!isDetached() || isTooSmall) {
QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default);
reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt);
}
if (QTypeInfo<T>::isComplex)
new (d->end()) T(t);
else
*d->end() = t;
++d->size;
}
Jak myślisz, dlaczego to ma znaczenie? Jaka jest Twoja motywacja do rozważenia argumentu wartości? –
Są szanse, że po prostu zachowują deklarację, aby pozostać w zgodzie z czymś. Historia lub inne funkcje. – nwp