Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Atridies от Май 06, 2020, 21:18



Название: Не могу разобрать запись
Отправлено: Atridies от Май 06, 2020, 21:18
Здравствуйте коллеги!

Потребовалось разобраться с куском кода на Qt (до этого писал на си и чуть-чуть на питоне).
Помогите разобрать запись:

Код:
QDataStream& operator<<(QDataStream& out, const Mode& v) 
{
  out << v.virt << v.buf[0] << v.buf[1];
  return out;
}

1. Что тут делается ?
2. Почему тут несколько << ? (в си это сдвиги).
3. Что за QDataStream?
4. Что за "operator" ?

Заранее спасибо!


Название: Re: Не могу разобрать запись
Отправлено: demal от Май 06, 2020, 21:32
это опрежеление, для того чтобы модель записывать в выходной файл. Посмотри в тырнете на тему как написать собственный оператор записи в поток, а также ввод/вывод на с++. 
QDataStream - класс реализующий запись двоичных данных в поток.
После такого определения будет возможно записывать данные в виде: выходной поток<<записываемые данные,


Название: Re: Не могу разобрать запись
Отправлено: Atridies от Май 07, 2020, 01:07
Благодарю за ответ.

Правильно ли я понимаю, что в out уйдет последовательно: v.virt, потом v.buf[0], потом v.buf[1]  ?


Название: Re: Не могу разобрать запись
Отправлено: kambala от Май 07, 2020, 10:44
все верно


Название: Re: Не могу разобрать запись
Отправлено: Atridies от Май 07, 2020, 13:42
Спасибо.

А это будет всё за один раз? Т.е. можно переписать эту запись как:
out << v.virt
out << v.buf[0]
out << v.buf[1];

Или при каждом вызове будет передача соседу и всё ? Т.е.:
out << v.virt
v.virt << v.buf[0]
v.buf[0] << v.buf[1];


Название: Re: Не могу разобрать запись
Отправлено: ViTech от Май 07, 2020, 13:55
А это будет всё за один раз? Т.е. можно переписать эту запись как:
out << v.virt
out << v.buf[0]
out << v.buf[1];

Этот вариант.