Size: a a a

2020 February 28

IZ

Ilia Zviagin in Qt
Elnee 雨
const QString&& constructed_str = QString("Some value: %1").arg(value);
ну бред же
источник

E雨

Elnee 雨 in Qt
Ilia Zviagin
В С++ и implicitly shared нет такого понятия
Оно есть в Qt
источник

IZ

Ilia Zviagin in Qt
Elnee 雨
Оно есть в Qt
Есть. Но компилятор об нём не знает ничего
источник

IZ

Ilia Zviagin in Qt
Elnee 雨
Целесообразно ли объявлять в локальной области видимости QString как rvalue-reference чтобы избежать вызова конструктора копирования (const QString&&) или в этом нет смысла поскольку этот тип implicitly shared и конструктор копирования не будет вызван?
Ты же про ОПТИМИЗАЦИЮ тут пытаешься говорить, да?
источник

AS

Anatoly Shirokov in Qt
Elnee 雨
const QString&& constructed_str = QString("Some value: %1").arg(value);
ничего не сэкономишь
источник

E雨

Elnee 雨 in Qt
Anatoly Shirokov
ничего не сэкономишь
Спасибо за ответ. Но я правильно понял почему не сэкономлю? Из-за COW или по другим причинам?
источник

IZ

Ilia Zviagin in Qt
Elnee 雨
const QString&& constructed_str = QString("Some value: %1").arg(value);
Ну я всё ещё не понимаю, так как тут написан бред.

Может всё же
const QString& constructed_str = QString("Some value: %1").arg(value);
источник

AS

Anatoly Shirokov in Qt
Elnee 雨
Спасибо за ответ. Но я правильно понял почему не сэкономлю? Из-за COW или по другим причинам?
не сэкономишь из-за move конструктора для rvalue
источник

E雨

Elnee 雨 in Qt
Ilia Zviagin
Ты же про ОПТИМИЗАЦИЮ тут пытаешься говорить, да?
Ну стараюсь просто не делать лишних действий.
источник

IZ

Ilia Zviagin in Qt
Anatoly Shirokov
не сэкономишь из-за move конструктора для rvalue
Толь, а можешь и мне объяснить?
источник

AS

Anatoly Shirokov in Qt
Ilia Zviagin
Толь, а можешь и мне объяснить?
создается временный объект, потом материализуется:

auto&& temp = QString("TEST"); // материализация временного объекта
если заменить на
auto temp = QString("TEST"); // будет вызван move конструктор и тоже все дешево
источник

E雨

Elnee 雨 in Qt
Ilia Zviagin
Ну я всё ещё не понимаю, так как тут написан бред.

Может всё же
const QString& constructed_str = QString("Some value: %1").arg(value);
Блин, что же я простых ссылках забыл....
источник

E雨

Elnee 雨 in Qt
Anatoly Shirokov
создается временный объект, потом материализуется:

auto&& temp = QString("TEST"); // материализация временного объекта
если заменить на
auto temp = QString("TEST"); // будет вызван move конструктор и тоже все дешево
Спасибо, теперь понял в чём заблуждался.
источник

AN

Alexander N in Qt
Интересно QString могёт sso
источник

E雨

Elnee 雨 in Qt
Но при простой ссылке под её создание тоже выделяется память?
источник

E雨

Elnee 雨 in Qt
Ilia Zviagin
Ну я всё ещё не понимаю, так как тут написан бред.

Может всё же
const QString& constructed_str = QString("Some value: %1").arg(value);
Я правильно понимаю, что здесь выделится память под QString, потом под ссылку и потом ссылка инициализируется значением?
источник

AS

Anatoly Shirokov in Qt
Elnee 雨
Я правильно понимаю, что здесь выделится память под QString, потом под ссылку и потом ссылка инициализируется значением?
в случае с
auto const & temp = QString("TEMP"); 

имеет место продление времени жизни временного объекта.
в этом случае компилятор выделит место под временный объект в скопе и temp будет указывать на него.
источник

IZ

Ilia Zviagin in Qt
Alexander N
Интересно QString могёт sso
Так не зачем...
источник

IZ

Ilia Zviagin in Qt
Elnee 雨
Я правильно понимаю, что здесь выделится память под QString, потом под ссылку и потом ссылка инициализируется значением?
НАбор действий примерно такой, но не обязательно должны быть все, и не обязательно такой порядок.
источник

IZ

Ilia Zviagin in Qt
Anatoly Shirokov
в случае с
auto const & temp = QString("TEMP"); 

имеет место продление времени жизни временного объекта.
в этом случае компилятор выделит место под временный объект в скопе и temp будет указывать на него.
Но может быть создано место в стеке под него и там сконструирован QString
источник