|
Почему
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Запускаю и вижу ВыводConstructor Destructor Почему не вызвались деструкторы промежуточных объектов ? Всегда ли по стандарту вывод будет таким или это зависит от настроек ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 14:35 |
|
Почему
|
|||
---|---|---|---|
#18+
Поставил SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-elide-constructors") Вывод: Constructor Move Destructor Move Destructor Move Destructor Move Destructor Destructor )))) Весело ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 14:43 |
|
Почему
|
|||
---|---|---|---|
#18+
У меня так пишет в DEBUG Код: plaintext 1. 2. 3. 4.
и так в RELEASE Код: plaintext 1. 2.
ИМХО скорее всего оптимизатор упростил код до такого Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 14:47 |
|
Почему
|
|||
---|---|---|---|
#18+
Короче завязяваться на то что деструктор будет вызван ровно 1 раз не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 14:59 |
|
Почему
|
|||
---|---|---|---|
#18+
Чуть поправил класс Код: plaintext 1. 2. 3. 4. 5. 6.
в дебаге выводит Код: plaintext 1. 2. 3. 4.
т.е. в T(T &&t) происходит копирование. Деструктор вызывается один раз для каждого объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 15:11 |
|
Почему
|
|||
---|---|---|---|
#18+
semen.s.semen Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Запускаю и вижу ВыводConstructor Destructor Почему не вызвались деструкторы промежуточных объектов ? Всегда ли по стандарту вывод будет таким или это зависит от настроек ? RVO В С++17 по моему уже принудительное ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 15:17 |
|
Почему
|
|||
---|---|---|---|
#18+
Siemargl, Его можно принудительно отключить ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 16:07 |
|
Почему
|
|||
---|---|---|---|
#18+
semen.s.semenSiemargl, Его можно принудительно отключить науха? все равно вызовы парные ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2019, 21:53 |
|
Почему
|
|||
---|---|---|---|
#18+
semen.s.semen, Это RVO. В зависимости от стандарта, поддерживаемого в текущем режиме компиляции, это может быть либо включаемой оптимизацией, либо гарантированным поведением. Гарантированно оно кажется с 17 го стандарта. Подробности на CPR ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 08:24 |
|
Почему
|
|||
---|---|---|---|
#18+
semen.s.semen, Да, move constructor для этого не нужен, а copy constructor должен (не для этого а просто по жизни) Принимать const T& ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 08:26 |
|
Почему
|
|||
---|---|---|---|
#18+
Dima TЧуть поправил класс Код: plaintext 1. 2. 3. 4. 5. 6.
в дебаге выводит Код: plaintext 1. 2. 3. 4.
т.е. в T(T &&t) происходит копирование. Потому что ты move semantics не используешь, и оно тут не нужно Деструктор вызывается один раз для каждого объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 08:29 |
|
|
start [/forum/topic.php?fid=57&msg=39806886&tid=2017621]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 141ms |
0 / 0 |