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

зачем нужен "&" ? - C++

Восстановить пароль Регистрация
 
jammer77
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 20
25.04.2010, 12:37     зачем нужен "&" ? #1
Встретил в книге Р.Лафоре в примере непонятную мне вещь.

зачем нужен "&" в данной конструкции?

C++
1
Distance& dist = *(new Distance)
почему бы не написать

C++
1
Distance dist = *(new Distance)
в чем разница?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
25.04.2010, 13:09     зачем нужен "&" ? #2
Потому, что ты конструкцией
C++
1
new Distance
выделяешь память под объект.. возвращается адресс этой памяти.. обычно использую такой подход:

C++
1
Distance *dist = new Distance;
создается указатель на Distance, которые указывает на память, выделенную под объект Distance оператором new.

Вот такая бы память, была бы нелогичной, так как присваивать объекту адресс - это против всякой логики.
C++
1
Distance dist = new Distance;
* - это оператор разыменования. он служит для того, чтобы получить доступ к объекту, зная его адресс.

То есть.. Сделав так
C++
1
Distance *dist = new Distance;
мы можем спокойно общаться с объектом.. например присвоить значение полу SomeX
C++
1
(*dist).SomeX = 4;
В этом же случае.. создается ссылка на Distance.. ссылка инициализируется не адрессом, как указатель.. а объектом.. поэтому мы и разименовываем адресс.
C++
1
Distance& dist = *(new Distance)
jammer77
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 20
25.04.2010, 13:39  [ТС]     зачем нужен "&" ? #3
спасибо конечно.. но "&" в объявлении переменной зачем?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.04.2010, 13:43     зачем нужен "&" ? #4
jammer77, чтобы указать, что это ссылка.
jammer77
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 20
25.04.2010, 13:54  [ТС]     зачем нужен "&" ? #5
Цитата Сообщение от Vourhey Посмотреть сообщение
jammer77, чтобы указать, что это ссылка.
C++
1
Distance dist = *(new Distance)
а чего так не написать?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.04.2010, 13:56     зачем нужен "&" ? #6
jammer77, а так это будет уже не ссылка.
jammer77
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 20
25.04.2010, 14:45  [ТС]     зачем нужен "&" ? #7
C++
1
2
3
4
int& test = *(new int);
int test1 = *(new int);
 
test = test1 = 777;
эта запись полностью правильная?

Добавлено через 33 минуты
Цитата Сообщение от Vourhey Посмотреть сообщение
jammer77, а так это будет уже не ссылка.
и чем это плохо?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.04.2010, 14:57     зачем нужен "&" ? #8
Да, правильная.
Цитата Сообщение от jammer77 Посмотреть сообщение
и чем это плохо?
Это не плохо. Почитай в инете про ссылки, чтобы таких вопросов не задавать.
http://programmersclub.ru/14/
jammer77
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 20
25.04.2010, 15:08  [ТС]     зачем нужен "&" ? #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Да, правильная.
Это не плохо. Почитай в инете про ссылки, чтобы глупых вопросов не задавать.
http://programmersclub.ru/14/
хочу заметить что я задаю свои вопросы в топике для глупых вопросов

а вообще я нашел правильный ответ у Стратструпа:

C++
1
2
3
4
int ii = 0; 
int& rr = ii; 
rr++;   
cout<<ii; // ii равна 1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2010, 15:10     зачем нужен "&" ?
Еще ссылки по теме:

C++ Ошибка : " L Buffer is too small & & 0"
C++ Цикл for: зачем использовать разделитель " ; " два раза?
В чём разница между возвратом "string" и "const string&" & C++

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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.04.2010, 15:10     зачем нужен "&" ? #10
jammer77, это не ответ, а просто кусок кода. А ответ тебе написали еще во втором сообщении. Достаточно просто прочитать про ссылки.
Yandex
Объявления
25.04.2010, 15:10     зачем нужен "&" ?
Ответ Создать тему
Опции темы

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