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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
#1

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

16.07.2010, 15:58. Просмотров 1663. Ответов 16
Метки нет (Все метки)

В книге написано что от независимые ссылочные переменные толку так сказать 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 и увидете разницу. Жду ваших примеров нащет етой темы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 15:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Независимые ссылочные переменные (C++):

Ссылочные типы данных + списки - C++
Написал код стандартным образом, нужно этот код теперь переделать с использованием ссылочных типов данных и с использованием списков. ...

Ссылочные типы.Списки(работа с указателями) - C++
Как эта задача записывается на С++?(условие написано на Pascal) Одно из возможных представлений длинного текста-это разделить его на...

Разделение консоли на независимые области - C++
Доброго времени суток. Есть ли способ разделить консоль (Windows) на 2 независимые области? Т.е. одна область, например, выводит...

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения - C++
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...

Какие независимые друг от друга изменения позволят коду отработать корректно? - C++
Какие независимые друг от друга изменения позволят коду отработать корректно: class Сountеr { public: // 1 void Count(); // 2 };...

Переменные,значение функции,вспомогательные переменные. - C++
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и вывести новые значения переменных A,B,C. ...

16
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 16:03 #2
ElvenDragon, А что за примеры ты хочешь?) Вполне неплохой пример привел ты.
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 16:09  [ТС] #3
Впринцыпе польза всетаки есть от них=)
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 16:16 #4
Цитата Сообщение от ElvenDragon Посмотреть сообщение
И вот самый главный плюс мы через обычную переменную можем менять значение константы.
Это не плюс - это бред. Константы должны быть константами, они для этого и были придуманы.
1
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.07.2010, 16:39 #5
В первую очередь ссылки используются для передачи в функции и возврата объектов из функций. Иногда можно пользоваться ссылками в качестве "запасного имени" (например, для навороченных конструкций вроде ptr->member.array[index] может оказаться удобнее создать ссылку, чем каждый раз выписывать их полностью). Использование ссылок к тому же очень хорошо оптимизируется.

Модификатор const, наложенный на ссылку, означает только то, что мы берём на себя обязательство не изменять объект при использовании этого имени.
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 16:51  [ТС] #6
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Это не плюс - это бред. Константы должны быть константами, они для этого и были придуманы.
Поддерживаю но зато теперь мы знаем как это ограничение пройти.
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
16.07.2010, 16:56 #7
ElvenDragon, перечитай еще раз внимательно вот это: "Модификатор const, наложенный на ссылку, означает только то, что мы берём на себя обязательство не изменять объект при использовании этого имени."
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
16.07.2010, 17:03  [ТС] #8
Да я знаю это но всеравно получилось неплохо.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
16.07.2010, 17:16 #9
Страуструп пишет, что ссылки были введены в основном для перегрузки операторов.
Если, например, в выражении
a = b – c;
b и c – это огромные классы, то, во избежание копирования, нам пришлось бы передавать в operator- указатели, т.е. писать что-то вроде
a = &b - &c.
1
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 18:35 #10
Пардон, что не по теме, но все-таки есть такой вопрос:
Покажите, как объявить int переменную с именем test, которую невозможно изменить в программе. Присвойте ей начальное значение 100.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 18:45 #11
evgeny1503, const int test=100;
Попробуй изменить. Или я чего-то не понял.
1
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 18:54 #12
Lavroff, вот и я точно так же думаю.
Этот вопрос задается в книге с++ для начинающих Герберта Шилдта. А ответы лежат в отдельной PDF-ке. Так вот в ней на этот вопрос такой ответ: static int test = 100
Скорее всего очепятка.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 18:57 #13
evgeny1503, Может и static. Прочитай про static.
0
evgeny1503
3 / 3 / 0
Регистрация: 04.07.2010
Сообщений: 24
16.07.2010, 19:02 #14
Хмм, ну на сколько я понял static просто сохраняет свое значение между вызовами функции, но значение то он свое меняет!
0
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,822
Записей в блоге: 28
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
Скорее всего очепятка.
Скорее всего.
2
16.07.2010, 19:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 19:08
Привет! Вот еще темы с ответами:

Создать бинарное дерево, по правой ветке - переменные типа инт, по левой - 2 переменные типа чар - C++
Здравствуйте. Необходимо создать бинарное дерево, по правой ветке - переменные типа инт, по левой - 2 переменные типа чар. ругается в...

Java простые переменные и ссылочные переменные - Java SE
Подскажите пожалуйста. Допустим напишем в коде: String s1 = &quot;Hello&quot;; Получается, что переменная s1 содержит ссылку на область памяти,...

Ссылочные переменные - Java SE
Почему нельзя присваивать адрес на объект ссылочной переменной, которая имеет отличный тип от типа объекта??? Я знаю что так можно...

Ссылочные переменные и объекты - Java
Всем привет, у меня такой вопрос, может ли ссылка типа Animal ссылаться на объект типа Car? К примеру: Animal an = new Car(); При...


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

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

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