Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
1

Тривиальный move конструктор

19.12.2013, 23:55. Показов 1937. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Вобщем пишу код используя классы некой библиотеки, полагаясь, что в будущем разработчики добавят move-конструкторы в эти классы.
Следовательно сейчас используются определенные компилятором по-умолчанию move-конструкторы (тобишь тривиальные).

Вопрос: тривиальный move-конструктор генерируется пустым (получается тогда нету никакой выгоды в скорости) или тупо почленно перемещает все данные-члены класса (по образцу копирующего конструктора, сгенерированного компилятором по-умолчанию, который почленно копирует) ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2013, 23:55
Ответы с готовыми решениями:

Move конструктор и его члены
Добрый день, почему у "выпотрашеного" B&& b поле b.a не rvalue? #include <iostream> #include...

Не срабатывает move конструктор std::unique_ptr
Всем привет! Битый час не пойму почему в списке захвата компилятор ругается на удаленный копирующий...

Move constructor: для чего нужен конструктор перемещения?
Здравствуйте, кто может объяснить для чего нужен конструктор перемещения, как он реализуется на...

Move конструктор &&
Никак не могу понять, что же он делает. Вроде как пишут, что он даже предпочтительнее, чем всякие...

7
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
24.12.2013, 01:59  [ТС] 2
Cформулирую немного по-другому:
Сгенерированный по умолчанию move-конструктор делает что-либо, или он пуст?
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
24.12.2013, 03:17 3
§ 12.8
15 The implicitly-defined copy/move constructor for a non-union class X performs a memberwise copy/move
of its bases and members.

Ответ - сгенерированный по умолчанию конструктор перемещения не пустой. Он будет пытаться поочередно вызывать конструкторы перемещения у мемберов класса
1
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
24.12.2013, 04:16  [ТС] 4
Цитата Сообщение от I.M. Посмотреть сообщение
§ 12.8
15 The implicitly-defined copy/move constructor for a non-union class X performs a memberwise copy/move
of its bases and members.
А если членом класса будет указатель на char, наример, то он будет перемещен?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
24.12.2013, 09:04 5
А чем член-указатель отличается от любого другого члена?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.12.2013, 14:09 6
gromo, Он будет перемещен, но в данном случае это эквивалентно поверхностному копированию.
1
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
24.12.2013, 14:22  [ТС] 7
Цитата Сообщение от castaway Посмотреть сообщение
А чем член-указатель отличается от любого другого члена?
В том смысле, что просто присвоить==переместить его значение члену другого экземпляра этого класса было бы не совсем правильно.
Цитата Сообщение от ForEveR Посмотреть сообщение
Он будет перемещен, но в данном случае это эквивалентно поверхностному копированию.
Спасибо. Это то, что я хотел узнать. Просто я думал, что сгенерированный по умолчанию move-конструктор оставит перемещенный член в valid, but unspecified state (ну или хотя бы обнулит указатель). Но, по-видимому, чтобы обеспечить такое минимальное поведение, его все-таки нужно самому переопределить.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
25.12.2013, 08:11 8
Как раз всё правильно, значение указателя скопируется/переместится.
0
25.12.2013, 08:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2013, 08:11
Помогаю со студенческими работами здесь

Нетривиальный тривиальный калькулятор
Привет! Ковырясь в OpenJDK разобрался как генерится/исполняется ассемблерный код в рантайме. Решил...

How can I resize a picture when I move a move a mouse on it, and size it back when I move mouse out?
How can I resize a picture when I move a move a mouse on it, and size it back when I move mouse...

Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор
Создать класс «матрица». Данный класс должен содержать элементы типа int, определяющие число строк,...

Что такой тривиальный и нетривиальный решений
Здравствуйте, эти термины не как не понимаю. Что такой тривиальное и нетривиальное решение ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru