Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,080
Записей в блоге: 1
#1

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

29.01.2014, 18:43. Просмотров 742. Ответов 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
Ответы с готовыми решениями:

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

Память. Стек или куча - есть ли преимущества одного кода над другим?
Здравствуйте, хотел спросить в чем различия. В чем тут недостатки и...

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

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

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

4
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
29.01.2014, 18:51 #2
оттого, что вы инициализировали ссылку указателем в никуда, правило
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ссылка в отличие от указателя обязана быть всегда инициализирована
не отменяется.

Не по теме:


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

0
0x10
2560 / 1740 / 286
Регистрация: 24.11.2012
Сообщений: 4,365
29.01.2014, 18:58 #3
Лучший ответ Сообщение было отмечено Kuzia domovenok как решение

Решение

Стрелять, так стрелять (по сути то же самое)
C++
1
2
3
4
5
int main()
{
    int& a = *static_cast<int*>(NULL);
    a = 0x10;
}
0
zelim
77 / 77 / 9
Регистрация: 26.12.2011
Сообщений: 217
30.01.2014, 01:58 #4
0x10, И снова всё то же самое правило.
Стивен Дьюхерст писал: "Ссылки - это псевдонимы, а не указатели" ("Священные знания C++", глава 5, если не изменяет память).
0
Croessmah
++Ͻ
14368 / 8150 / 1534
Регистрация: 27.09.2012
Сообщений: 20,088
Записей в блоге: 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
30.01.2014, 05:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 05:12

В чем преимущество использования Pimpl?
Есть две реализации одной лабораторной. Первая с закрытым наследованием, вторая...

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

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


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

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

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