805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
1

Объясните разницу между указателем и ссылкой

21.02.2015, 14:27. Показов 1096. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, в чем разница между этими двумя строками?
C++
1
2
Distance dist = *(new Distance);
Distance& dist = *(new Distance);
Где Distance - имя некоторого класса.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2015, 14:27
Ответы с готовыми решениями:

Объясните разницу между прототипом и определением функции
Объясните разницу между прототипом и определением функции.

Объясните разницу между C# и C++
Часто встречаю на форуме, что мол C++ мощнее C#. Можно услышать ответ проффесионала, в чем...

Объясните разницу между....
Привет АLL!!! Сабж. Чем они отличаются???? Set oradynaset =...

Объясните разницу между alias и host(a)
Добрый вечер, коллеги! У меня на сервере IIS существует два веб-приложения. И нужно на каждое из...

5
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
21.02.2015, 15:03 2
Второе ссылка.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
21.02.2015, 15:20 3
В первом случае слева - "объект по значению",
который будет проинициализирован копией объекта созданного в куче.
При этом адрес объекта в куче оказывается утерян, и по итогу - утечка памяти.

Во втором случае слева - ссылка на объект, который в куче. Никаких копий.
Ссылка - псевдоним оригинального объекта. Его другое имя, если хотите.
Все операции, которые совершаются над ссылкой,
на самом деле совершаются над оригинальным объектом.

А значит, если попросить адрес ссылки, получим адрес объекта в куче,
а зная адрес объекта в куче его можно удалить,
а значит теоретически здесь нет утечки памяти.
1
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
21.02.2015, 15:36  [ТС] 4
nmcf
Вы мне конкретно различия объясните, а не так, что вот, это ссылка.
В данной строке, как я понял, по левую сторону от знака равно сперва неявно для нас выделяется память под объект класса Distance с именем dist, а по правую сторону от знака равно, теперь уже явным образом выделяется память под безымянный объект класса Distance. Завершающим этапом, с помощью копирующего конструктора по умолчанию, поля безымянного объекта в правой части копируются в объект с именем dist.
Кликните здесь для просмотра всего текста
C++
1
Distance dist = *(new Distance);


Прошу тех же объяснений со второй строкой.

Добавлено через 10 минут
hoggy
Я правильно понял, что во второй строке, по сути, просто дается имя созданному безымянному объекту, стоящему справа от знака равно?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
21.02.2015, 15:58 5
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Я правильно понял, что во второй строке, по сути, просто дается имя созданному безымянному объекту, стоящему справа от знака равно?
Да.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
21.02.2015, 18:55 6
Была лисица, её склонировали, а клон отослали киношникам.
0
21.02.2015, 18:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2015, 18:55
Помогаю со студенческими работами здесь

Объясните разницу между twisted и celery
Добрый день! Друзья, если возможно, объясните, пожалуйста, разницу между этими двумя фреймворками....

Объясните разницу между двумя #define
Объясните пожалуйста, в чем разница между 2 строчками ниже. В каких случаях они отличаются, в...

Объясните разницу между объектами element и HTMLElement
объясните пожалуйста разницу между объектами Element и HTMLElement, никак не могу разобраться... и...

Объясните разницу между входными и выходными параметрами
Здравствуйте, объясните мне пожалуйста разницу между входными и выходными параметрами в хранимых...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru