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

Независимые ссылочные переменные - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 15:58     Независимые ссылочные переменные #1
В книге написано что от независимые ссылочные переменные толку так сказать 0 у переменной 2 имени хотя ето не так=) Есть толк от пример.

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
 
int main() {
  int t = 10;
  const int &i = t;
  t = 11;
  cout << i;
  return 0;
}
Мы сдесь можем использовать независимую ссылочную переменную как константу. И вот самый главный плюс мы через обычную переменную можем менять значение константы. Минус задать размер массива всетаки с помощью такой константы нельзя. Попробуйте закоментировать t = 11 и увидете разницу. Жду ваших примеров нащет етой темы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.07.2010, 16:03     Независимые ссылочные переменные #2
ElvenDragon, А что за примеры ты хочешь?) Вполне неплохой пример привел ты.
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 16:09  [ТС]     Независимые ссылочные переменные #3
Впринцыпе польза всетаки есть от них=)
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 16:16     Независимые ссылочные переменные #4
Цитата Сообщение от ElvenDragon Посмотреть сообщение
И вот самый главный плюс мы через обычную переменную можем менять значение константы.
Это не плюс - это бред. Константы должны быть константами, они для этого и были придуманы.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
16.07.2010, 16:39     Независимые ссылочные переменные #5
В первую очередь ссылки используются для передачи в функции и возврата объектов из функций. Иногда можно пользоваться ссылками в качестве "запасного имени" (например, для навороченных конструкций вроде ptr->member.array[index] может оказаться удобнее создать ссылку, чем каждый раз выписывать их полностью). Использование ссылок к тому же очень хорошо оптимизируется.

Модификатор const, наложенный на ссылку, означает только то, что мы берём на себя обязательство не изменять объект при использовании этого имени.
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 16:51  [ТС]     Независимые ссылочные переменные #6
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Это не плюс - это бред. Константы должны быть константами, они для этого и были придуманы.
Поддерживаю но зато теперь мы знаем как это ограничение пройти.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
16.07.2010, 16:56     Независимые ссылочные переменные #7
ElvenDragon, перечитай еще раз внимательно вот это: "Модификатор const, наложенный на ссылку, означает только то, что мы берём на себя обязательство не изменять объект при использовании этого имени."
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 17:03  [ТС]     Независимые ссылочные переменные #8
Да я знаю это но всеравно получилось неплохо.
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
16.07.2010, 17:16     Независимые ссылочные переменные #9
Страуструп пишет, что ссылки были введены в основном для перегрузки операторов.
Если, например, в выражении
a = b – c;
b и c – это огромные классы, то, во избежание копирования, нам пришлось бы передавать в operator- указатели, т.е. писать что-то вроде
a = &b - &c.
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 18:35     Независимые ссылочные переменные #10
Пардон, что не по теме, но все-таки есть такой вопрос:
Покажите, как объявить int переменную с именем test, которую невозможно изменить в программе. Присвойте ей начальное значение 100.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.07.2010, 18:45     Независимые ссылочные переменные #11
evgeny1503, const int test=100;
Попробуй изменить. Или я чего-то не понял.
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 18:54     Независимые ссылочные переменные #12
Lavroff, вот и я точно так же думаю.
Этот вопрос задается в книге с++ для начинающих Герберта Шилдта. А ответы лежат в отдельной PDF-ке. Так вот в ней на этот вопрос такой ответ: static int test = 100
Скорее всего очепятка.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.07.2010, 18:57     Независимые ссылочные переменные #13
evgeny1503, Может и static. Прочитай про static.
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 19:02     Независимые ссылочные переменные #14
Хмм, ну на сколько я понял static просто сохраняет свое значение между вызовами функции, но значение то он свое меняет!
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
16.07.2010, 19:08     Независимые ссылочные переменные #15
Цитата Сообщение от Lavroff Посмотреть сообщение
evgeny1503, const int test=100;
Попробуй изменить. Или я чего-то не понял.
При желании можно написать код типа:

C
1
int *p = &test; *p = 101;
Если переменная глобальная, то такой код скорее всего сломается на исполнении (но зависит от компилятора). Если локальная - то значение переменной изменится, а потому в случае работы с оптимизациями компилятор, "поверив" модификатору const в месте использования переменной test подставит значение 100. Я это всё к тому, что модификатор const - это не панацея, а лишь конструкция языка, которая аппаратно в процессоре не поддерживается и лишь частично может быть поддержана средствами операционной системы. Некоторые компиляторы имеют опции типа "игнорировать модификаторы const", чтобы нормально можно было скомпилировать программы, написанные всякими дятлами. Как правило это наследие 20-30 летней давности, когда программисты понаписали всякой ерунды, а оптимизации толком не работали из-за малого количества памяти в тогдашних машинах (и потому некорректный исходник на исполнении вёл себя корректно)

Цитата Сообщение от evgeny1503 Посмотреть сообщение
Lavroff, вот и я точно так же думаю.
Этот вопрос задается в книге с++ для начинающих Герберта Шилдта. А ответы лежат в отдельной PDF-ке. Так вот в ней на этот вопрос такой ответ: static int test = 100
Скорее всего очепятка.
Скорее всего.
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 19:58     Независимые ссылочные переменные #16
с++ для начинающих Герберта Шилдта
кстати, хорошая ли это книга для новичка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 22:46     Независимые ссылочные переменные
Еще ссылки по теме:

C++ Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Разделение консоли на независимые области C++
Какие независимые друг от друга изменения позволят коду отработать корректно? C++

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 22:46     Независимые ссылочные переменные #17
Цитата Сообщение от Evg Посмотреть сообщение
При желании можно написать код типа:
C
1
int *p = &test; *p = 101;
Не получится, &test будет указателем на константу.
Но так или иначе, константность можно снять тем же const_cast'ом, так что, как уже было сказано, константность не панацея.
Yandex
Объявления
16.07.2010, 22:46     Независимые ссылочные переменные
Ответ Создать тему
Опции темы

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