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

Вопрос насчет указателей - C++

Восстановить пароль Регистрация
 
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
04.11.2011, 22:23     Вопрос насчет указателей #1
Объясните мне пожалуйста, что значит подобное объявление:

const SimpleCat * const FunctionTwo (const SimpleCat * const TheCat);

Выше, разумеется, объявлен класс SimpleCat. Понятно, что const SimpleCat возле const TheCat - это указатель, который не может менять свой адрес, а const TheCat - переменная, которую нельзя изменять. const SimpleCat * возле const FunctionTwo наверно значит, что возвращается указатель, который впоследствии нельзя изменять, но тут я уже не очень уверена. Но что значит const FunctionTwo я совсем не понимаю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2011, 23:26     Вопрос насчет указателей #2
Керра, функция с именем FunctionTwo принимает константный указатель на константу (т.е. этот указатель нельзя менять (присваивать ему другой адрес), а также по этому указателю нельзя менять данные, на которые он указывает) типа SimpleCat и возвращает также константный указатель на константу типа SimpleCat.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
04.11.2011, 23:36     Вопрос насчет указателей #3
Цитата Сообщение от Керра Посмотреть сообщение
Выше, разумеется, объявлен класс SimpleCat. Понятно, что const SimpleCat возле const TheCat - это указатель, который не может менять свой адрес, а const TheCat - переменная, которую нельзя изменять. const SimpleCat * возле const FunctionTwo наверно значит, что возвращается указатель, который впоследствии нельзя изменять, но тут я уже не очень уверена. Но что значит const FunctionTwo я совсем не понимаю.
Не много не так. Все наоборот.
Первый const относится к типу(SimpleCat), т.е. к данным( на которых указывает указатель), которые нельзя изменять, а второй const относится к указателю(* TheCat), т.е. к указателю, который нельзя именять.
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
05.11.2011, 16:04  [ТС]     Вопрос насчет указателей #4
silent 1991, именно это я и не могу понять. то есть функция возвращает что-то, что впоследствии изменять нельзя?

Добавлено через 9 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Первый const относится к типу(SimpleCat), т.е. к данным( на которых указывает указатель), которые нельзя изменять, а второй const относится к указателю(* TheCat), т.е. к указателю, который нельзя именять.
То есть если я пишу в параметрах функции
C++
1
(const int * const Something)
, во-первых, так вообще можно записать? Во-вторых, первый const значит что то что находится по адресу указателя изменять нельзя, а второй - что нельзя изменять сам адрес указателя?

Добавлено через 3 минуты
что-то я напартачила с этими двумя сообщениями тут...
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
05.11.2011, 17:19     Вопрос насчет указателей #5
Цитата Сообщение от Керра Посмотреть сообщение
что нельзя изменять сам адрес указателя?
Нельзя изменять адрес который хранится в указателе.
Читайте Неочевидные ответы на простые вопросы раздел 4 "Модификатор const"

Добавлено через 23 минуты
Цитата Сообщение от Керра Посмотреть сообщение
const SimpleCat * const FunctionTwo (...);
Не первый раз такое встречаю, и не вижу смысла во втором const, функция возвращает lvalue которое и так нельзя модифицировать.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
05.11.2011, 18:13     Вопрос насчет указателей #6
Цитата Сообщение от Керра Посмотреть сообщение
, во-первых, так вообще можно записать?
Так вы же сами в первом сообщении написали то же самое. Конечно можно.
Цитата Сообщение от Керра Посмотреть сообщение
Во-вторых, первый const значит что то что находится по адресу указателя изменять нельзя, а второй - что нельзя изменять сам адрес указателя?
Да!
Yandex
Объявления
05.11.2011, 18:13     Вопрос насчет указателей
Ответ Создать тему
Опции темы

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