Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
1

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

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

Подскажите пожалуйста, в чем разница между этими двумя строками?
C++
1
2
Distance dist = *(new Distance);
Distance& dist = *(new Distance);
Где Distance - имя некоторого класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2015, 14:27
Ответы с готовыми решениями:

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

В чем разница между указателем и указателем на указатель?
int x, *p, *q; x=10; p=&x; q=p; cout<<*q; int x, *p, **q; x=10; p=&x; q=&p;

Объясните что не так с указателем в программе
Функция defStart возвращает указатель на int . В main другой указатель присваивает значение(адрес)...

Объясните разницу в strlen()
Вот код: char ch = "Hello, World!"; char ch2 = {'H','e', 'l', 'l', 'o', ',', ' ', 'w', 'o',...

Объясните разницу в использовании массива
1. Здесь вначале мы задаем переменную (const) size и в массиве вместо цифры мы указываем эту...

5
nmcf
6277 / 5578 / 2539
Регистрация: 14.04.2014
Сообщений: 23,476
21.02.2015, 15:03 2
Второе ссылка.
0
hoggy
Нарушитель
Эксперт С++
7088 / 3131 / 648
Регистрация: 15.11.2014
Сообщений: 7,211
Завершенные тесты: 1
21.02.2015, 15:20 3
В первом случае слева - "объект по значению",
который будет проинициализирован копией объекта созданного в куче.
При этом адрес объекта в куче оказывается утерян, и по итогу - утечка памяти.

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

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


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

Добавлено через 10 минут
hoggy
Я правильно понял, что во второй строке, по сути, просто дается имя созданному безымянному объекту, стоящему справа от знака равно?
0
hoggy
Нарушитель
Эксперт С++
7088 / 3131 / 648
Регистрация: 15.11.2014
Сообщений: 7,211
Завершенные тесты: 1
21.02.2015, 15:58 5
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Я правильно понял, что во второй строке, по сути, просто дается имя созданному безымянному объекту, стоящему справа от знака равно?
Да.
0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,546
Записей в блоге: 24
Завершенные тесты: 1
21.02.2015, 18:55 6
Была лисица, её склонировали, а клон отослали киношникам.
0
21.02.2015, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2015, 18:55

Объясните разницу между "cin.getline" и "std::getline"
string a; cin.getline(a); getline(cin, a);в чем разница между "cin.getline(a);" и "getline(cin,...

Явное преобразование типов данных(объясните разницу)!
В чём разница между этим: cout << "float(int_value15) / int_value2 = " << float(int_value15) /...

Что общего между именем массива и указателем?
Что общего между именем массива и указателем?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru