Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex(S)
0 / 0 / 0
Регистрация: 04.05.2008
Сообщений: 24
#1

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

06.08.2009, 21:38. Просмотров 811. Ответов 6
Метки нет (Все метки)

Помогите please!
Что означает строка:
CString &ptr = Text;

Text определена выше, как:
CString Text;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2009, 21:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает строка: CString &ptr = Text; ? (C++):

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Что означает *& - C++
Искал я информацию про деревья в с++, нашёл информацию в http://ci-plus-plus-snachala.ru/?p=1249 но там используется *&amp;, что мне не...

Что означает node*& ? - C++
void del_all(node*&amp; r) //удаление всех узлов { if (!r) return; del_all(r-&gt;left); del_all(r-&gt;right); delete r; r = NULL; ...

Что означает сочетание *& - C++
например здесь: struct Node //Звено дерева { int x; //То, что записываем в дерево Node *l,*r; //Это указатели на новые...

Что означает данное условие? if (i & (1 << j) - C++
Можете объянить простым алгоритмическим языком что данное условие означает? if (i &amp; (1 &lt;&lt; j))

Что означает запись (struct addr *)&one - C++
Что означает тринадцатая строчка в коде? #include &lt;iostream&gt; using namespace std; int main() { struct addr { int a; ...

6
palva
2648 / 1875 / 274
Регистрация: 08.06.2007
Сообщений: 7,195
Записей в блоге: 4
06.08.2009, 22:14 #2
ptr это ссылка на Text. Ссылка очень похожа на указатель, поскольку фактически содержит адрес, но различия тоже есть.

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

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

Пример:
Код
CString Text;
CString &ptr = Text;
Text='Hello';
cout << (LPCTSTR)ptr << ' ' << (LPCTSTR)Text << endl;
cout << ptr.GetLength() << ' ' << Text.GetLength() << endl;
0
palva
2648 / 1875 / 274
Регистрация: 08.06.2007
Сообщений: 7,195
Записей в блоге: 4
06.08.2009, 22:15 #3
Пардон, недописал...

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

Почему указатель не делается целого типа, это же логично, если адрес переменной число, то и указатель должен содержать в себе число.
0
palva
2648 / 1875 / 274
Регистрация: 08.06.2007
Сообщений: 7,195
Записей в блоге: 4
19.08.2009, 19:29 #7
Если мы обсуждаем C++, то указатель - не число. Ведь число мы можем умножить на два, а указатель не можем.

Но если возникают вопросы, почему жизнь так по-дурацки устроена, то пора бежать за Клинским.
0
19.08.2009, 19:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2009, 19:29
Привет! Вот еще темы с ответами:

что означает данная строчка? &operator - C++
что это означает? (Tabl это класс) friend ofstream &amp;operator &lt;&lt; ( ofstream &amp;outf, Tabl MyTabl ) я так понимаю объявляется...

Что означает знак & в объявлении функции - C++
Здравствуйте, в обучающих статьях о С++ наткнулся на очень интересную синтаксическую конструкцию. Не совсем разобрался с указателями и...

Что означает строка - C++
for (i = iv.size() - 1;i != -1;i--) { а именно iv.size() -1 #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; #include...

Непонятный указатель: что означает запись (IEngineSubSystem *&)p_render ? - C++
Здравствуйте. Вот код: IRender *p_render; pEngineCore-&gt;GetSubSystem(ESS_RENDER,(IEngineSubSystem *&amp;)p_render); Там еще, короче,...


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

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

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