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

Что означает строка: CString &ptr = Text; ? - C++

Восстановить пароль Регистрация
 
Alex(S)
0 / 0 / 0
Регистрация: 04.05.2008
Сообщений: 24
06.08.2009, 21:38     Что означает строка: CString &ptr = Text; ? #1
Помогите please!
Что означает строка:
CString &ptr = Text;

Text определена выше, как:
CString Text;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2409 / 1631 / 204
Регистрация: 08.06.2007
Сообщений: 6,459
Записей в блоге: 4
06.08.2009, 22:14     Что означает строка: CString &ptr = Text; ? #2
ptr это ссылка на Text. Ссылка очень похожа на указатель, поскольку фактически содержит адрес, но различия тоже есть.

1. Изменить этот адрес присваиванием программа не может, адрес устанавливается только инициализацией.

2. Ссылка используется без всяких дополнительных символов (указатель используют со звездочкой). То есть она служит синонимом. переменной, на которую указывает.

Пример:
Код
CString Text;
CString &ptr = Text;
Text='Hello';
cout << (LPCTSTR)ptr << ' ' << (LPCTSTR)Text << endl;
cout << ptr.GetLength() << ' ' << Text.GetLength() << endl;
palva
 Аватар для palva
2409 / 1631 / 204
Регистрация: 08.06.2007
Сообщений: 6,459
Записей в блоге: 4
06.08.2009, 22:15     Что означает строка: CString &ptr = Text; ? #3
Пардон, недописал...

Первый оператор выводит
Hello Hello
второй
5 5
Alex(S)
0 / 0 / 0
Регистрация: 04.05.2008
Сообщений: 24
06.08.2009, 22:32  [ТС]     Что означает строка: CString &ptr = Text; ? #4
Спасибо.
А будет какая-то разница если строчка будет записана так:
CString& ptr = Text;
?
palva
 Аватар для palva
2409 / 1631 / 204
Регистрация: 08.06.2007
Сообщений: 6,459
Записей в блоге: 4
06.08.2009, 22:42     Что означает строка: CString &ptr = Text; ? #5
Разницы не будет, но это не должно ввести вас в заблуждение. Следующее описание
Код
CString& ptr = Text, q = Text;
описывает ссылку ptr и обычную строку q (изменив Text мы увидим изменение ptr но не q). Таким образом амперсанд к q не относится, а относится только к ptr, поэтому логичнее прижимать его к переменной. Хотя пробел здесь вообще можно не использовать.
Alex(S)
0 / 0 / 0
Регистрация: 04.05.2008
Сообщений: 24
19.08.2009, 17:58  [ТС]     Что означает строка: CString &ptr = Text; ? #6
Если создавать указатель на С++, то необходимо его делать такогоже типа что и указуемый объект. Зачем?
Например: CString Text;
CString *ptr=&Text;

Почему указатель не делается целого типа, это же логично, если адрес переменной число, то и указатель должен содержать в себе число.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2009, 19:29     Что означает строка: CString &ptr = Text; ?
Еще ссылки по теме:

Что означает node*& ? C++
Что означает сочетание *& C++
C++ Что означает строка кода cout.setf(ios_base::fixed)
Что означает знак & в объявлении функции C++
C++ Непонятный указатель: что означает запись (IEngineSubSystem *&)p_render ?

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

Или воспользуйтесь поиском по форуму:
palva
 Аватар для palva
2409 / 1631 / 204
Регистрация: 08.06.2007
Сообщений: 6,459
Записей в блоге: 4
19.08.2009, 19:29     Что означает строка: CString &ptr = Text; ? #7
Если мы обсуждаем C++, то указатель - не число. Ведь число мы можем умножить на два, а указатель не можем.

Но если возникают вопросы, почему жизнь так по-дурацки устроена, то пора бежать за Клинским.
Yandex
Объявления
19.08.2009, 19:29     Что означает строка: CString &ptr = Text; ?
Ответ Создать тему
Опции темы

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