Название: QDataStream operator << записывает не сразу Отправлено: kambala от Июль 30, 2011, 19:07 Здравствуйте. Почему оператор << у QDataStream записывает данные в свой device() не сразу же (как например cout, см. ниже), а лишь в конце команды?
Вот пример: Код Раньше у меня стоял вывод этих двух значений на разных строчках, а сегодня решил сэкономить на одной и втулил оба вывода в одну. Убил часа 2 на то, чтобы понять, что так делать нельзя, поскольку вызов checksum() происходит прежде, чем QDataStream записывает fileSize, и соответственно в момент вызова checksum() новое значение ещё не успевает появиться в saveFileContents. Попробовал сделать нечто аналогичное с cout, так тут всё происходит так, как и ожидается (хотя может и не совсем удачный пример): Код
Название: Re: QDataStream operator << записывает не сразу Отправлено: Авварон от Июль 30, 2011, 21:20 Пример с сиаутом некорректен
Название: Re: QDataStream operator << записывает не сразу Отправлено: SimpleSunny от Июль 30, 2011, 22:01 Пример с cout UB и то что вы хотите тоже, порядок вычисления аргументов у функции не определен.
Подробнее можете почитать тут http://alenacpp.blogspot.com/2005/11/sequence-points.html Название: Re: QDataStream operator << записывает не сразу Отправлено: kambala от Июль 30, 2011, 22:22 спасибо, теперь понял
|