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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.94
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
#1

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

15.06.2010, 19:35. Просмотров 6248. Ответов 21
Метки нет (Все метки)

Цитата Сообщение от 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2010, 19:35     Сравнение указателей и ссылок.
Посмотрите здесь:

Сравнение содержимого указателей C++
C++ Касательно указателей и ссылок.
Совместное использование указателей и ссылок C++
Использование ссылок и указателей C++
Особенности использования указателей и ссылок в C++ при возврате из функции C++
Реализация программы с использованием ссылок и указателей C++
Ступор в возврате указателей и ссылок C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++ Сравнение указателей
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     Сравнение указателей и ссылок.
Ответ Создать тему
Опции темы

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