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

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

21.02.2015, 14:27. Просмотров 436. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объясните разницу между указателем и ссылкой (C++):

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

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

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

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

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

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

5
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
21.02.2015, 15:03 #2
Второе ссылка.
0
hoggy
Заблокирован
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
Заблокирован
21.02.2015, 15:58 #5
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Я правильно понял, что во второй строке, по сути, просто дается имя созданному безымянному объекту, стоящему справа от знака равно?
Да.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
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
Привет! Вот еще темы с решениями:

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

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

Вычислить разницу между двумя датами
1. есть ли функция которая вычислит сколько прошло например с 1934 до 2014. 2....

Найти разницу между количествами слов
Дана строка, содержащая слова, которые состоят только из английских букв,...


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

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

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