Russian Qt Forum

Qt => Вопросы новичков => Тема начата: evgeniy от Декабрь 31, 2014, 17:04



Название: Возвращать в виде указателя или нет?
Отправлено: evgeniy от Декабрь 31, 2014, 17:04
Допустим, надо возвратить из функции переменную типа QStringList. Если сделать её не в виде указателя, то будут затрачиваться ресурсы на копирование во время возврата переменной из функции. Плюс к этому, если это значение присваивается атрибуту объекта, то опять будут затрачиваться ресурсы на копирование.
То есть, как правильнее и эффективнее:
Код:
class foo {
  QStringList* list;
  QStringList* getLlist();
}
или не мудрить:
Код:
class foo {
  QStringList list;
  QStringList getLlist();
}


Название: Re: Возвращать в виде указателя или нет?
Отправлено: Old от Декабрь 31, 2014, 17:50
Не мудрить. :)
Тем более в данном случае, никаких накладнвх расходов не будет.


Название: Re: Возвращать в виде указателя или нет?
Отправлено: Igors от Декабрь 31, 2014, 18:06
К сожалению, в Qt это сходит с рук (срабатывает имплисит шара). Все же если собрались возвращать "тот самый" list, то "типа грамотно" так
Код
C++ (Qt)
class foo {
public:
 QStringList & getLlist() { return list; }
 const QStringList & getLlist() const { return list; }
 
private:
 QStringList list;
};


Название: Re: Возвращать в виде указателя или нет?
Отправлено: Old от Декабрь 31, 2014, 18:10
Это "сходит с рук" не только в Qt. К радости. :)


Название: Re: Возвращать в виде указателя или нет?
Отправлено: evgeniy от Декабрь 31, 2014, 18:16
Спасибо!!!