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

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

Восстановить пароль Регистрация
 
Heisenberg
44 / 45 / 3
Регистрация: 11.08.2010
Сообщений: 226
23.03.2014, 18:34     [C++11] move\rvalue ref semantic #1
Перегрузил оператор присвоения используя 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 - будет ли утечка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 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++
6543 / 3963 / 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
Ответ Создать тему
Опции темы

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