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

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

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

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

02.12.2011, 18:07. Просмотров 1955. Ответов 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);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 18:07     Инициализация ссылок
Посмотрите здесь:

Инициализация ссылок - 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: ...

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

Правильная инициализация ? - C++
Здравствуйте уважаемые программисты! Мне необходимо описать два класса, один ArrayOfInt - якобы одномерный массив, и SqArrayOfInt - уже...

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

Инициализация указателя - C++
Написал такой код: #include <iostream> using namespace std; int main() { int n=10; int* a=new int ;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.12.2011, 18:33     Инициализация ссылок #4
fasked, полагаю, объявление ссылки на указатель и попытка инициализировать её с помощью синтаксиса конструктора с параметром.

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

Не по теме:

Опоздал...

fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.12.2011, 18:36     Инициализация ссылок #5
http://liveworkspace.org/code/287ad7...fe561d78f339a1
thick_int
Заблокирован
02.12.2011, 18:43  [ТС]     Инициализация ссылок #6
И что это значит?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 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     Инициализация ссылок
Еще ссылки по теме:

Инициализация vector - C++
При создание вектора, пытаюсь сразу задать начальные значения: std::vector<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; но компилятор (MinGW...

инициализация указателя - C++
class Item { public: Item() { num0=new char("как");//ошибка cannot convert from 'const char ' to 'char' num1=new...

Инициализация матрицы - C++
Здравствуйте. В 9 строчке где только }; написано выдается ошибка: variable-sized object 'matr' may not be initialized. Что может быть не...

Инициализация структур - C++
Не могу уловить по какой причине первый вариант рабочий: А этот нет:

Инициализация вектора - C++
Как правильно инициализировать двумерный символьный вектор? Пробовал вот так, не получилось vector< vector<char> > map(2,...


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

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

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

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