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

Сравнение указателей и ссылок. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.94
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
15.06.2010, 19:35     Сравнение указателей и ссылок. #1
Цитата Сообщение от Evg Посмотреть сообщение
В си есть указатели. Указатель и ссылка на низком уровне это одно и то же, но на уровне языка - разные вещи
Не совсем так для них компилятор вырабатывает разный ассемблерный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    //mov dword ptr [dwC], 18h;
    int dwC=24;
    //Передача по ссылке
    //lea eax,[dwC]
    //mov dword ptr [ldwC1],eax
    int *ldwC1 (&dwC);         //значение получено ldwC1[0]-24
    //Присваивание другого указателя
    //mov eax,dword ptr [ldwC1]
    //mov dword ptr [ldwC2],eax
    int *ldwC2=ldwC1;          //значение получено ldwC2[0]-24
    //Присваивание адреса с преобразованием
    //mov eax,dword ptr [dwC] 
        //mov dword ptr [ldwC3],eax 
    int *ldwC3=*(int**)&dwC;   //значение не получено ldwC3[0]-неопределено
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
19.02.2012, 15:44     Сравнение указателей и ссылок. #21
AzaKendler, думаю эффект тут только относительно объектов - rvalue references позволяют избежать вызова конструктора копирования и связанных с ним издержек. Очевидно выигрыш тут будет больше чем одна инструкция асма
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 16:48     Сравнение указателей и ссылок.
Еще ссылки по теме:

Ступор в возврате указателей и ссылок C++
C++ Демонстрация работы ссылок, указателей или дескрипторов
C++ Сравнение указателей

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

Или воспользуйтесь поиском по форуму:
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
19.02.2012, 16:48     Сравнение указателей и ссылок. #22
alex_x_x, пожалуй ты прав наверно в этом вся соль

C++
1
2
3
4
5
6
7
8
9
10
11
12
remote_integer& operator=(remote_integer&& other) {
        cout << "MOVE ASSIGNMENT OPERATOR." << endl;
 
        if (this != &other) {
            delete m_p;
 
            m_p = other.m_p;
            other.m_p = NULL;
        }
 
        return *this;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
remote_integer& operator=(remote_integer& other) {
      
 
        if (this != &other) {
            delete m_p;
 
            m_p = other.m_p;
            other.m_p = NULL;
        }
 
        return *this;
    }
как на твой взгляд в чем различие будет?


считается что вызова деструктора не будет в первом случае. т.е. данные не скопировались
а "как бы перенеслись" и обнулив данные объекта переданного по rvalue мы предотвращаем вызов его деструктора. если не так понял. поправьте

Добавлено через 5 минут
Evg, вопрос в том что если lvalue ref и указатель это на низком уровне одно и тоже, то rvalue ref
судя по всему отличается и хотелось более ясного представления, а что же он таки делает и почему дает те эффекты о которых пишется тут.
т.е. мне показалось что переменная см. скрин, вначале помещается в некую "область для временных данных". в общем хотелось мнения людей понимающих хорошо ассемблер.
помещая переменную в такую область какой выигрыш можно получить?
что прозойдет с объектами если к ним обратится через rvalue.
Yandex
Объявления
19.02.2012, 16:48     Сравнение указателей и ссылок.
Ответ Создать тему
Опции темы

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