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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
thick_int
Заблокирован
#1

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

02.12.2011, 18:07. Просмотров 2418. Ответов 7
Метки нет (Все метки)

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

Инициализация ссылок - C++
Пусть T - это некоторый класс. Хотелось бы знать, всегда ли такой код приемлем. extern int function1(T); extern int function2(T&);...

Инициализация - C++
1. Создать класс Solid 2. Его наследует Planet 3. В функции Gravitation используются объекты Solid Это все .h и .cpp библиотеки 4....

Создание и инициализация - C++
Добрый вечер, я как всегда с нетривиальными вопросами :) допустим есть объект class myclass { int i; public: ...

Инициализация в блоке if - C++
Всем привет. if ((auto pointPos = wcsrchr(buffer, L'.')) != nullptr) *pointPos = '\0'; Есть код с ошибкой "expected an...

Инициализация дерева - C++
Добрый день. пытаюсь писать небольшое бинарное дерево. вот что получилось #include <stdio.h> #include <stdlib.h> #include...

Инициализация указателей - C++
Добрый вечер, объясните пожалуйста, что значит присвоение начальных значений указателям, как например в данном случае: float *fPtr =...

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

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

Не по теме:

Опоздал...

0
fasked
Эксперт С++
4976 / 2556 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.12.2011, 18:36 #5
http://liveworkspace.org/code/287ad7aac756a978c3fe561d78f339a1
0
thick_int
Заблокирован
02.12.2011, 18:43  [ТС] #6
И что это значит?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 19:14 #7
Цитата Сообщение от thick_int Посмотреть сообщение
Непонятно почему такой синтаксис инициализации ссылок ошибочен
Компилятор не может отличить создание переменной от прототипа функции. С ним такое бывает.
0
thick_int
Заблокирован
02.12.2011, 19:50  [ТС] #8
Так я тоже обратил внимание на то, что в одном случае он отличает, а в другом нет.
Ну это, если принять ту точку зрения, что действительно имеет место путаница между инициализацией ссылки и прототипом функции.

А чтобы проверить это хотелось бы узнать, а есть ли в C++ такой тип, который вернуть из функции нельзя, но ссылку на который учредить можно?
0
02.12.2011, 19:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 19:50
Привет! Вот еще темы с ответами:

Инициализация массива - C++
int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl; cin >> n; mas = new int * ; for (int i = 0; i < n;...

Инициализация переменной - C++
Приветствую уважаемые пользователи cyberforum! У меня появился вопрос по инициализации переменной с типом int Почему нельзя сделать вот...

Инициализация массива C++ - C++
Почему, если мы не инициализируем переменную, то при попытке работы с ней будет ошибка int main(){ char x; cout << x; ...

Инициализация вектора - C++
у меня в классе есть vector из string (константный, просто строки нужны как образец для других функций), в конструкторе соответственно надо...


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

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

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