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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Heisenberg
44 / 45 / 3
Регистрация: 11.08.2010
Сообщений: 226
#1

[C++11] move\rvalue ref semantic - C++

23.03.2014, 18:34. Просмотров 292. Ответов 3
Метки нет (Все метки)

Перегрузил оператор присвоения используя move\rvalue ref semantic.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    /**
     * Copy operator
     * @param rhs Right hand side argument of binary operator.
     */
    Vector3<T> operator=(const Vector3<T>& rhs)
    {
        x = rhs.x;
        y = rhs.y;
        z = rhs.z;
        return *this;
    }
 
    /**
     * Move operator
     * @param rhs Right hand side argument of binary operator.
     */
    Vector3<T> operator=(Vector3<T>&& rhs)
    {
        x = rhs.x;
        y = rhs.y;
        z = rhs.z;
        return *this;
    }
Но по прежнему работает оператор копирования, проверял это делая вывод в обоих перегрузках оператор присвоения. Если убрать первую перегрузку (copy operator), то move operator все ровно не будет работать, в дебаге так же break point-ы ставил
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 18:34     [C++11] move\rvalue ref semantic
Посмотрите здесь:

rvalue C++
Почему i++ это rvalue, а ++i lvalue? C++
C++ Почему *(a+j) не rvalue?
C++ std::move, rvalue reference
C++ Move Semantic - будет ли утечка?
Rvalue reference and lambda C++
Rvalue ref как параметр функции. Странности с оптимизацией C++
Function return rvalue C++
Rvalue ссылки C++
C++ Rvalue vector
Что такое rvalue и lvalue C++
C++ Rvalue и lvalue ссылки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12531 / 7093 / 797
Регистрация: 27.09.2012
Сообщений: 17,502
Записей в блоге: 2
Завершенные тесты: 1
23.03.2014, 18:37     [C++11] move\rvalue ref semantic #2
Цитата Сообщение от Heisenberg Посмотреть сообщение
Но по прежнему работает оператор копирования
где?
Heisenberg
44 / 45 / 3
Регистрация: 11.08.2010
Сообщений: 226
23.03.2014, 18:53  [ТС]     [C++11] move\rvalue ref semantic #3
В конструкторе класса Data

C++
1
2
3
4
5
6
7
    Data(Vector3<float> const& position, Vector2<float> const& rotation)
    {
        buffer = 0;
 
        m_position = position;
        m_rotation = rotation;
    }
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.03.2014, 19:31     [C++11] move\rvalue ref semantic #4
C++
1
2
3
4
5
6
7
Data(Vector3<float> position, Vector2<float> rotation)
    {
        buffer = 0;
 
        m_position = std::move(position);
        m_rotation = std::move(rotation);
    }
Yandex
Объявления
23.03.2014, 19:31     [C++11] move\rvalue ref semantic
Ответ Создать тему
Опции темы

Текущее время: 11:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru