Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Lvalue и rvalue - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как сделать проверку нажатия по спрайту хаотичной формы? http://www.cyberforum.ru/cpp/thread1772858.html
Игра в изометрии на SDL , и встаёт вопрос как сделать проверку нажатия(мышкой) на объект (например кровать) и совершить действия при нажатии(например спать)
C++ Нужна программа для перехвата клика мыши Стоит задача: Когда я нажимаю ЛКМ нужно, чтобы программа перехватила это нажатие, и нажала лишь когда истечет определенное кол-во времени. pseudo_code: if(GetAsyncKeyState(0x01)) { перехват мыши;... http://www.cyberforum.ru/cpp/thread1772607.html
Неявные интерфейсы С++ шаблонов. Сложно о простом C++
Неявные интерфейсы С++ шаблонов. Сложно о простом. Вот заметка в формате PDF о том, как использовать типизацию для параметров шаблонов. Отдельные утверждения из заметки процитирую, не влезет...
C++ Как написать браузер под Windows?
Здравствуйте. Подскажите пожалуйста, как можно написать браузер на C++? Можно не с нуля. Может ли это сделать человек, без особой практики C++, но знающий его основы? Требуется написать браузер...
C++ Рекурсивные функции. Разделение эл. массива, пока не останется 1 элемент http://www.cyberforum.ru/cpp/thread1771720.html
Вся суть в том что нужно взять массив из 10 элементом и разделить его на пополам (например от 1 до 5 и от 6 до 10) потом левую часть которая (от 1 до 5) снова разделить на 2 части (например, от 1 до...
C++ Не могу скомпилировать сорс с github Скачал отсюда https://github.com/AmirAfendin/SPM исходник, но скомпилировать его никак не получается. Кто разбирается помогите. P.S. там надо заменить 1 строку, что бы заработала, но разработчик... подробнее

Показать сообщение отдельно
elch10
38 / 21 / 4
Регистрация: 27.04.2015
Сообщений: 168
Завершенные тесты: 2

Lvalue и rvalue - C++

30.06.2016, 13:27. Просмотров 374. Ответов 5
Метки (Все метки)

Какая выгода использования rvalue? Допустим есть такой класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
public:
    A() = default;
    void setName(const std::string& name)
    {
        m_Name = name;
    }
 
    void setName(std::string&& name)
    {
        m_Name = std::move(name);
    }
private:
    std::string m_Name;
};
и main
C++
1
2
3
4
5
6
7
8
int main()
{
    A a;
    std::string name{"another name"};
    a.setName("New name");//№1
    a.setName(name);//№2
    return 0;
}
Какая выгода использования rvalue? Ведь при использовании по ссылке, не вызываются никакие конструкторы копирования и т.д. И мы просто копируем данные. А при перемещении мы копируем из источника, а потом удаляем данные из источника. Так и какая здесь выгода, если удаление строки и так произойдёт, только сразу же после выхода из функции. Я имею ввиду что если мы уберём функцию с rvalue
C++
1
2
3
4
void setName(std::string&& name)
    {
        m_Name = std::move(name);
    }
и будем использовать lvalue версию с rvalue, вот так
C++
1
a.setName("New name");
Или я что то не понял?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru