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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
#1

Преобразование в указатель на указатель на константу - C++

22.08.2012, 03:21. Просмотров 1071. Ответов 9
Метки нет (Все метки)

В упор не могу понять правила которые приводит Дьюхерст для преобразований "многоуровневых" указателей.

(Дьюхерст "Скользкие места С++" Совет 32 "Преобразование в указатель на указатель на константу" стр 79)

Преобразование в указатель на указатель на константу
Преобразование в указатель на указатель на константу

Пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int ***const cnnn= 0;
 
int **const* ncnn= 0;
 
int *const** nncn= 0;
 
int *const*const* nccn= 0;
 
const int *** nnnc= 0;
 
ncnn = cnnn;
 
nncn = cnnn; /* Ошибка ! */
 
nccn = cnnn;
 
nnnc = cnnn; /* Ошибка ! */
Есть литература на эту тему с более лучшим качеством изложения ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2012, 03:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование в указатель на указатель на константу (C++):

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Указатель на строковую константу - C++
Здравствуйте уважаемые форумчане! Подскажите пожалуйста является ли эта ситуация выходом за пределы массива или размер массива...

Указатель на строковую константу - C++
Всем привет. Я знаю что в С++ в основном юзается std::string,но сишные строки тоже желательно знать. Вроде все просто, только функции...

ссылка на указатель на константу. Не могу врубиться - C++
Добрый вечер! Не подскажите почему только выражение с pi_ref3 верное, а остальные - нет (VS 2013). Выражение с pi_ref1 вроде как-то...

Константный указатель на константу меняет значение - C++
int d = 7; const int* const cd = &d; d = 8; qDebug()<<*cd;

Указатель на строковую константу. В чем отличие двух приведенных примеров - C++
char *x; x = "Текст"; это указатель на строковую константу. char x="Текст"; - строка(т.е. массив символов). В чём отличие...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vxg
22.08.2012, 09:54
  #2

Не по теме:

снимаю шляпу - таких фокусов с const я никогда в жизни не видел. максимум - const перед типом или const перед именем. может такие фокусы и не нужны)? даже не знаю, что посоветовать в плане осознания написанного. слежу с интересом.

2
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
22.08.2012, 17:09  [ТС] #3
Цитата Сообщение от vxg Посмотреть сообщение
может такие фокусы и не нужны)?
Дальше в книге Дьюхерст пишит что необходимость применения возникает довольно часто и приводит пример
0
nexen
22.08.2012, 17:27
  #4

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение

Дальше в книге Дьюхерст пишит что необходимость применения возникает довольно часто и приводит пример
Можешь выложить примеры? Я бы на это посмотрел :>

0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
22.08.2012, 18:24 #5
Avazart, Да нет как раз требуется это редко, т.к. в основном пользуются векторами/строками. А если нужна быстрота - то это повод смотреть в сторону Си
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
22.08.2012, 18:26  [ТС] #6
Avazart, Да нет как раз требуется это редко, т.к. в основном пользуются векторами/строками. А если нужна быстрота - то это повод смотреть в сторону Си
Ну так ничто не мешает совмещать код... в этом и плюсы...

И все же как объяснить подобные преобразования ?
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
22.08.2012, 18:40 #7
Avazart,

Не по теме:

это черная магия. Просто прийми это как есть)

0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
22.08.2012, 18:44 #8
Avazart, Так как написано в книге. Ни у Саттера, ни у Страуструпа, ни у Александреску, ни у Мейерса я таких примеров не встречал. Потому либо лезть копаться в стандарте, либо принять как написано здесь
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
22.08.2012, 18:46  [ТС] #9
Да наверное придется лезть в стандарт...
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
24.08.2012, 07:20  [ТС] #10
В стандарте таже фигня:
Цитата Сообщение от Standard for Programming Language C++, 4.4 Qualification conversions
where each cvi,j is const, volatile, const volatile, or nothing. The n-tuple of cv-qualifiers after the
first in a pointer type, e.g., cv1,1, cv1,2, · · · , cv1,n in the pointer type T1, is called the cv-qualification
signature of the pointer type. An expression of type T1 can be converted to type T2 if and only if the
following conditions are satisfied:

— the pointer types are similar.
— for every j > 0, if const is in cv1,j then const is in cv2,j , and similarly for volatile.
— if the cv1,j and cv2,j are different, then const is in every cv2,k for 0 < k < j.
Условие
— if the cv1,j and cv2,j are different, then const is in every cv2,k for 0 < k < j.
Вообще не понятно....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 07:20
Привет! Вот еще темы с ответами:

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Функция, принимающая указатель и число байт и выделяющая память под указатель - C++
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и число байт и выделяющую память под...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель - C++
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef struct tree { int data; tree *left, *right,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.08.2012, 07:20
Ответ Создать тему
Опции темы

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