Итак, известно, что этот код не имеет смысла:
const int foo()
{
int n = // do computation...;
return n;
}
Потому что какой смысл возвращать "const int", когда он все равно копируется?
Но с классами с неявным разделением (COW), такими как контейнеры Qt, это имеет смысл снова? Рассмотрим:
const QList<mytype> get_list()
{
QList<mytype> lst;
// do stuff to fill list;
return lst;
}
Теперь я могу сделать:
const QList<mytype> mylst = get_list();
Поскольку Qt имеет неявное совместное использование для контейнеров, оно должно работать нормально, потому что return lst
на самом деле не копирует содержимое списка, просто увеличьте refcount, и const
убедитесь, что я не могу его изменить (если get_list
хотите по какой-то причине убедиться в этом или должны быть самим методом const
). Правильно ли мое мышление здесь?