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

Инициализация ссылок - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
thick_int
Заблокирован
02.12.2011, 18:07     Инициализация ссылок #1
Непонятно почему такой синтаксис инициализации ссылок ошибочен:
C++
1
2
int * p(nullptr);
int * &pref(p);
Требуется вот так:
C++
1
2
int * p(nullptr);
int * (&pref)(p);
Можно было бы понять, что мол приоритет скобок выше чем ссылки, но тогда почему вот такой синтаксис вполне легален:
C++
1
2
int a = 4;
int &b(a);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 18:07     Инициализация ссылок
Посмотрите здесь:

Инициализация окна C++
C++ Создание и инициализация
Инициализация переменной C++
C++ Инициализация ссылок
инициализация C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.12.2011, 18:15     Инициализация ссылок #2
Цитата Сообщение от thick_int Посмотреть сообщение
int * &pref(p);
Я, честно говоря, тоже не понимаю, что эта запись может значить.
thick_int
Заблокирован
02.12.2011, 18:29  [ТС]     Инициализация ссылок #3
Это ссылка на указатель на тип int, которая инициализируется значением указателя p.
Проще это можно записать так:
C++
1
int * &pref = p;
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.12.2011, 18:33     Инициализация ссылок #4
fasked, полагаю, объявление ссылки на указатель и попытка инициализировать её с помощью синтаксиса конструктора с параметром.

Добавлено через 3 минуты

Не по теме:

Опоздал...

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.12.2011, 18:36     Инициализация ссылок #5
http://liveworkspace.org/code/287ad7...fe561d78f339a1
thick_int
Заблокирован
02.12.2011, 18:43  [ТС]     Инициализация ссылок #6
И что это значит?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 19:14     Инициализация ссылок #7
Цитата Сообщение от thick_int Посмотреть сообщение
Непонятно почему такой синтаксис инициализации ссылок ошибочен
Компилятор не может отличить создание переменной от прототипа функции. С ним такое бывает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 19:50     Инициализация ссылок
Еще ссылки по теме:

C++ Ленивая инициализация!
Инициализация по стандарту C++11 C++
C++ инициализация класса С++

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

Или воспользуйтесь поиском по форуму:
thick_int
Заблокирован
02.12.2011, 19:50  [ТС]     Инициализация ссылок #8
Так я тоже обратил внимание на то, что в одном случае он отличает, а в другом нет.
Ну это, если принять ту точку зрения, что действительно имеет место путаница между инициализацией ссылки и прототипом функции.

А чтобы проверить это хотелось бы узнать, а есть ли в C++ такой тип, который вернуть из функции нельзя, но ссылку на который учредить можно?
Yandex
Объявления
02.12.2011, 19:50     Инициализация ссылок
Ответ Создать тему
Опции темы

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