Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
1

Const, pointers, reference

13.09.2014, 14:47. Показов 1410. Ответов 4
Метки нет (Все метки)

C++
1
2
3
const int& const ref1; 
const int &ref1;
int const &ref1;
Во всех случаях это константная ссылка или ссылка на константу(мне, кажется, константная ссылка более правильно)? А запись int& const ref1 бессмысленна, т.е. это все равно будет обычная ссылка, а не константная ссылка?
(Ведь мы не можем изменить ссылку, для нее не выделяется память, это просто псевдоним...)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
Как читаются следующие 5 объявлений?
//int a = 10;
C++
1
2
3
4
5
const int *const i = &a;
const int*const &refi = i;
int* const &ref2=i;//Error
const int* &ref3 = i;//Error
const const const const int*const &refi = i;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
И может кто-нибудь привести такие примеры:
ссылка на константный указатель
ссылка на константный указатель на константу
константная ссылка на константный указатель на константу
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
P.s.:С указателями это понятно, но когда добавляется ссылка, начинается путаница, что к чему относится.
0

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

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2014, 14:47
Ответы с готовыми решениями:

Non-const lvalue reference to type
Добрый день. Мне надо передать указатель на матрицу (Шахматная доска) Piece* board в функцию...

Lambda init capture by const reference
Всем привет. Почему не получается добиться следующего поведения: auto main() -> int { ...

Ошибка undefined reference to `QueueTp<Worker>::isfull() const'
Здравствуйте. Вот выводятся такие ошибочки. Помогите, плз, разобраться. Приведу некоторые файлы:...

Странная ошибка invalid initialization of non-const reference of type 'std::vector<oneVec>::iterator&
Пишу я значит двухмерный вектор, решаю проверить наличие ошибок(я просто компилирую) и выдают такую...

4
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
13.09.2014, 15:18 2
Лучший ответ Сообщение было отмечено notemac как решение

Решение

Цитата Сообщение от notemac Посмотреть сообщение
для нее не выделяется память, это просто псевдоним
Не всегда.
Цитата Сообщение от notemac Посмотреть сообщение
const int *const i = &a;
Константный указатель на константное целое.
C++
1
2
int a = 10;
const int *const aPtr = &a;
Цитата Сообщение от notemac Посмотреть сообщение
const int*const &refi = i;
Ссылка на константный указатель на константное целое.
C++
1
2
3
int a = 10;
const int *const aPtr = &a;
const int *const &aPtrRef = aPtr;
Цитата Сообщение от notemac Посмотреть сообщение
int* const &ref2=i;
Ссылка на константный указатель на целое.
C++
1
2
3
int a = 10;
int *const aPtr = &a;
int *const &aPtrRef = aPtr;
Цитата Сообщение от notemac Посмотреть сообщение
const int* &ref3 = i;
Ссылка на указатель на константное целое.
C++
1
2
3
int a = 10;
const int *aPtr = &a;
const int *&aPtrRef = aPtr;
Цитата Сообщение от notemac Посмотреть сообщение
const const const const int*const &refi = i;
Это ошибка.
Цитата Сообщение от notemac Посмотреть сообщение
ссылка на константный указатель
ссылка на константный указатель на константу
Вы уже сами выше их привели.
1
:)
Эксперт С++
4768 / 3262 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.09.2014, 21:57 3
Clockwise/Spiral Rule
1
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.09.2014, 15:57 4
Цитата Сообщение от notemac Посмотреть сообщение
Во всех случаях это константная ссылка или ссылка на константу(мне, кажется, константная ссылка более правильно)?
правильно ссылка на константу ибо
Цитата Сообщение от notemac Посмотреть сообщение
мы не можем изменить ссылку
1
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2014, 16:12 5
Jupiter, Если честно, очень мутная в этом плане терминология. И здесь, наверное, она константная не потому, что
Цитата Сообщение от notemac Посмотреть сообщение
мы не можем изменить ссылку
а потому, что мы не можем изменить через нее то, на что она указывает. Саму ссылку мы не можем изменить в любом случае.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2014, 16:12

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

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ?...

Ошибка компиляции undefined reference to `Polygon::Polygon(Point const*, int)'
#include &quot;Polygon.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using std::cout; using...

RVALUE Ссылка, error: cannot bind non-const lvalue reference of type 'String&' to an rvalue of type 'String'|
Код не компилируется ниже 17 стандарта с++ с ошибкой error: cannot bind non-const lvalue reference...

Ошибка: Binding 'const Ship' to reference of type 'Ship&' discard qualifiers. Не пойму, где теряется const
есть public метод класса с квалификатором const тип _ships - QMultiMap QMultiMap имеет...


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

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

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