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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.80
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
#1

const function - C++

29.12.2011, 20:37. Просмотров 5921. Ответов 3
Метки нет (Все метки)

Здравствуйте, совсем забыл не напомните, что меняется в функции в зависимости от расположения const:
Например:
const int const function(const i) {return i;} const;
---1-------2-------------3------------------4---
1) Насколько я помню возвращает константную перменную
2)
3)Принимает константную переменную
4)
Или 2 или 4 делает функцию константной: запрещает ей менять переменные класса, а вот что делает еще один const я не помню
Заранее спасибо за помощь!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 20:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос const function (C++):

Вызов const метод std::function - C++
Добрый день, #include <functional> #include <string> #include <iostream> using namespace std; class Foo { ...

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

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Что это bool operator== (const CLASS&) const; - C++
Что это? class CLASS { public: bool operator== (const CLASS&amp;) const; ...

Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения - C++
const int Counter(const TSNum *Start) { int c=0; while(Start!=NULL){Start=Start-&gt;next;} return c; } Функция...

3
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
29.12.2011, 21:40 #2
1 - Правильно
2 - делает константным содержимое переменной, если это указатель или массив
3 - правильно
4 - делает функцию константной
2
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
29.12.2011, 21:42  [ТС] #3
Большое спасибо!
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
30.12.2011, 14:08 #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 в статье Неочевидные ответы на простые вопросы
1
30.12.2011, 14:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2011, 14:08
Привет! Вот еще темы с ответами:

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' - C++
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context Unit1.cpp(55): parsing: void _fastcall...

Модификатор const для параметра функции не const? - C++
void foo(const int N) { int Arr; //&lt;-- ??? } В clang это работает. В VisualStudio 2015 нет.

const& и const* в имени функции - C++
Объясните пожалуйста что значит const&amp; и const* в имени и параметрах функции(пример из Вандевурд,Джосаттис): template &lt;typename T&gt; ...

Cannot convert 'const wchar_t *' to 'const char *' - C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,&quot;acc.dll&quot;,RT_RCDATA); if(!hRes){ } HGLOBAL...


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

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

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