Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.04.2016, 14:34   #61
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

как то так

Код:
String(String && s)  
    {
		cout << "Constructor copy move "<<this<<" "<<&s<<endl;
		buffer = new char[strlen(s.buffer)+1]; 
		strcpy(buffer,s.buffer);
	}
RAFA91 вне форума
Старый 21.04.2016, 14:42   #62
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
как то так
Если Вы хотите переместить строку,
то зачем занимаетесь копированием?
Croessmah вне форума
Старый 21.04.2016, 14:44   #63
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

какая гарантия что после String(String && s) будет вызван деструктор s
RAFA91 вне форума
Старый 21.04.2016, 14:53   #64
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Причем здесь деструктор s?
Croessmah вне форума
Старый 21.04.2016, 14:58   #65
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

повторюсь

какая гарантия что после String(String && s) будет вызван деструктор s

s - это временной обьект если не в курсе.
RAFA91 вне форума
Старый 21.04.2016, 15:01   #66
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
s - это временной обьект если не в курсе.
s - это rvalue-reference, она не обязана ссылаться на временный объект, если не в курсе.
Так что у s вообще нет деструктора, так как s - Это ссылка.

Но, ежели там "за кулисами" временный объект, то для него гарантировано
будет вызван деструктор в конце его жизни.
Конечно, если не произойдет чего-то, что нарушит это (например seg. fault)

Последний раз редактировалось Croessmah; 21.04.2016 в 15:03.
Croessmah вне форума
Старый 21.04.2016, 15:19   #67
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
s - это rvalue-reference, она не обязана ссылаться на временный объект, если не в курсе.
Так что у s вообще нет деструктора, так как s - Это ссылка.
не нужно говорить как профессор. вас мало кто поймет .

надо говорить как-то так

&& это ссылка на временной обьект

& это ссылка на не временной обьект

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

переместители.
RAFA91 вне форума
Старый 21.04.2016, 15:34   #68
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
&& это ссылка на временной обьект
это глупость.
Цитата:
& это ссылка на не временной обьект
это тоже глупость

пример:
Код:
const Type& r1 = a+b;//r1 - ссылка на временный объект
Type o1;
Type&& r2 = std::move(o1);//r2 - ссылка не на временный объект
Цитата:
если это понять то можно сразу сказать когда будет вызваны
если это понять так, то можно записаться к психиатору сразу.
Croessmah вне форума
Старый 21.04.2016, 15:39   #69
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

&& работает только с обьектами.

можете доказать что оно работает со стандартными типами ?
RAFA91 вне форума
Старый 21.04.2016, 15:51   #70
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
можете доказать что оно работает со стандартными типами ?
Держи:
Код:
    int x(0);
    int&& r = std::move(x);
rvelue-reference на int.
Другое дело, что перемещать примитивные типы не имеет смысла.
Цитата:
&& работает только с обьектами.
int - тоже объект фундаментального типа.
Определение объекта можете посмотреть в стандарте.
Croessmah вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условный оператор,оператор цикла и массив Klark73 Microsoft Office Excel 1 19.12.2011 17:09
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 12:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24