383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
1 | |
Тривиальный move конструктор19.12.2013, 23:55. Показов 1937. Ответов 7
Метки нет (Все метки)
Всем привет.
Вобщем пишу код используя классы некой библиотеки, полагаясь, что в будущем разработчики добавят move-конструкторы в эти классы. Следовательно сейчас используются определенные компилятором по-умолчанию move-конструкторы (тобишь тривиальные). Вопрос: тривиальный move-конструктор генерируется пустым (получается тогда нету никакой выгоды в скорости) или тупо почленно перемещает все данные-члены класса (по образцу копирующего конструктора, сгенерированного компилятором по-умолчанию, который почленно копирует) ?
0
|
19.12.2013, 23:55 | |
Ответы с готовыми решениями:
7
Move конструктор и его члены Не срабатывает move конструктор std::unique_ptr Move constructor: для чего нужен конструктор перемещения? Move конструктор && |
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 |
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 |
В том смысле, что просто присвоить==переместить его значение члену другого экземпляра этого класса было бы не совсем правильно.
Спасибо. Это то, что я хотел узнать. Просто я думал, что сгенерированный по умолчанию move-конструктор оставит перемещенный член в valid, but unspecified state (ну или хотя бы обнулит указатель). Но, по-видимому, чтобы обеспечить такое минимальное поведение, его все-таки нужно самому переопределить.
0
|
25.12.2013, 08:11 | 8 |
Как раз всё правильно, значение указателя скопируется/переместится.
0
|
25.12.2013, 08:11 | |
25.12.2013, 08:11 | |
Помогаю со студенческими работами здесь
8
Нетривиальный тривиальный калькулятор How can I resize a picture when I move a move a mouse on it, and size it back when I move mouse out? Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор Что такой тривиальный и нетривиальный решений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |