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

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

Войти
Регистрация
Восстановить пароль
 
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
#1

Ссылки и указатели - в чем преимущество одного над другим - C++

29.01.2014, 18:43. Просмотров 636. Ответов 4

Известно, что главной причиной появления ссылок в С++ было дать более безопасную альтернативу указателям в некоторых ситуациях. Ссылка в отличие от указателя обязана быть всегда инициализирована, а указатель можно не только забыть инициализировать но и уже инициализированный затереть, например. Преимущество очевидно? Но всегда ли ссылки инициализированы? Что будет с этим кодом?
C++
1
2
3
int* p=NULL;
int& ref=*p;
ref=1337;
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылки и указатели - в чем преимущество одного над другим (C++):

В чем преимущество list над вектором? - C++
В чем преимущество list над вектором?

Память. Стек или куча - есть ли преимущества одного кода над другим? - C++
Здравствуйте, хотел спросить в чем различия. В чем тут недостатки и преимущества разных способов? Apple apple(); и Apple *apple = new...

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

Указатели и ссылки: в чем разница - C++
Здравствуйте, объясните, пожалуйста, в чем разница между "ссылается" и "указывает"?

В чем преимущество рекурсивных функций? - C++
Насколько я понял, любую рекурсивную функцию можно реализовать итерационно. И при этом, итерационная реализация не переполняет стэк,...

В чем преимущество использования Pimpl? - C++
Есть две реализации одной лабораторной. Первая с закрытым наследованием, вторая с использованием Pimpl. Делают одно и тоже. Объясните...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,677
29.01.2014, 18:51 #2
оттого, что вы инициализировали ссылку указателем в никуда, правило
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ссылка в отличие от указателя обязана быть всегда инициализирована
не отменяется.

Не по теме:


проблема не в ссылке, а указателе и не надо стрелки переводить

0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
29.01.2014, 18:58 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Стрелять, так стрелять (по сути то же самое)
C++
1
2
3
4
5
int main()
{
    int& a = *static_cast<int*>(NULL);
    a = 0x10;
}
0
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
30.01.2014, 01:58 #4
0x10, И снова всё то же самое правило.
Стивен Дьюхерст писал: "Ссылки - это псевдонимы, а не указатели" ("Священные знания C++", глава 5, если не изменяет память).
0
Croessmah
Эксперт CЭксперт С++
13207 / 7478 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
30.01.2014, 05:12 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Но всегда ли ссылки инициализированы?
Всегда, но никто не говорил, что ссылки должны быть всегда валидны.
C++
1
2
3
int & ref = * new int ;
delete &ref ;
ref = 123 ;
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Преимущество очевидно?
видите, чтобы сделать ошибку надо уже шаманить понемногу
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Что будет с этим кодом?
Да нет ничего, упадет скорее всего и всё.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 05:12
Привет! Вот еще темы с ответами:

Статическая и динамическая линковка - в чем преимущество каждой? - C++
Помогите разобраться со статической и динамической линковкой. Я правильно понял, что статическая линковка упаковывает все либы в екзешник и...

В чем преимущество объявления прототипов классов в хедере? - C++
Здравствуйте, можете подсказать, в чем преимущество объявления прототипов классов перед классом, в котором они используются? Или зачем так...

Указатели и действия над указателями - C++
char *ptr, result, s1; ptr = strtok(s1, &quot; &quot;); if (strstr(result, strcpy(&quot; &quot;, strcpy(ptr, &quot; &quot;))) == NULL) strcat_s(result,...

Указатели и ссылки c++ - C++
Здравствуйте! Не могли бы вы объяснить как можно использовать ссылки и указатели c++ на практике? Я не пойму для чего они нужны!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.01.2014, 05:12
Ответ Создать тему
Опции темы

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