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

const function - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.80
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
29.12.2011, 20:37     const function #1
Здравствуйте, совсем забыл не напомните, что меняется в функции в зависимости от расположения const:
Например:
const int const function(const i) {return i;} const;
---1-------2-------------3------------------4---
1) Насколько я помню возвращает константную перменную
2)
3)Принимает константную переменную
4)
Или 2 или 4 делает функцию константной: запрещает ей менять переменные класса, а вот что делает еще один const я не помню
Заранее спасибо за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
29.12.2011, 21:40     const function #2
1 - Правильно
2 - делает константным содержимое переменной, если это указатель или массив
3 - правильно
4 - делает функцию константной
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
29.12.2011, 21:42  [ТС]     const function #3
Большое спасибо!
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
30.12.2011, 14:08     const function #4
1 и 2. Попросту игнорируется. Поскольку в случае возврата результат нет никакой явно заданной переменной, а квалифиактор const относится либо к переменной, либо к указателю

C
1
2
3
4
const int func (void)
{
  return 0;
}
Код
$ gcc t.c -c -Wignored-qualifiers
t.c:2:11: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
3. Если ты имеешь определение (definition) функци, то это обычная const переменная (которая в нашем случае является параметром, инициализируемым извне по отношению к функции)

C
1
2
3
4
void func (const int x)
{
  x = 0;
}
Код
$ gcc t.c -c
t.c: In function 'func':
t.c:3: error: assignment of read-only location
Если ты имеешь дело с описанием (declaration) функции, то попросту игнорируется (при условии, что const относится к переменной, а не к указателю). Потому как имея на руках описание функции, ты не имеешь никакого экземпляра переменной, которую хоть как-то мог бы модифицировать

4. Есть только в Си++ и только для метода класса. Запрещает изменять поля своего класса

А вообще про const почитай раздел 4 в статье Неочевидные ответы на простые вопросы
Yandex
Объявления
30.12.2011, 14:08     const function
Ответ Создать тему
Опции темы

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