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

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

Войти
Регистрация
Восстановить пароль
 
programina
2046 / 601 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Что означает идендификатор const в обьявлении функции? - C++

10.04.2013, 11:17. Просмотров 710. Ответов 7
Метки нет (Все метки)

Что означает идендификатор const в обьявлении функции? Например:
C++
int if_R() const; // ОНА ВОЗВРАЩАЕТ КОНСТАНТУ??????
 
// и можно ли писать так:
 
const int if_R();
 
// если да, то есть ли разница?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 11:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает идендификатор const в обьявлении функции? (C++):

Что означает const после круглых скобок функции - C++
всем привет. скажите, а что здесь значит const? int func(int var) const { return get; }

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

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

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

Что означает такое обьявление функции? - C++
SimpleCat &amp;TheFunction()

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

7
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7840 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
10.04.2013, 11:23 #2
Цитата Сообщение от programina Посмотреть сообщение
Что означает идендификатор const в обьявлении функции?
означает, что метод класса не изменяет состояние объекта

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
class A{
    int x;
public:
    A(){x=0;}
    void SetX_1()const{x=10;}//Ошибка
    void SetX(){x=10;}
}
1
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.04.2013, 11:24 #3
Если не ошибаюсь, то в первом случае метод не будет изменять значений объекта.
а const int if_R возвращает константное значение.
1
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7840 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
10.04.2013, 11:24 #4
Так же может быть полезно почитать про mutable
C++
1
2
3
4
5
6
7
class A{
    mutable int x;
public:
    A(){x=0;}
    void SetX_1()const{x=10;}//Нет ошибки
    void SetX(){x=10;}
};
1
programina
2046 / 601 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 11:28  [ТС] #5
Цитата Сообщение от Croessmah Посмотреть сообщение
означает, что метод класса не изменяет состояние объекта

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
class A{
    int x;
public:
    A(){x=0;}
    void SetX_1()const{x=10;}//Ошибка
    void SetX(){x=10;}
}
Если я правильно понимаю, то в конструкторе переменная х инициализирована нулем, а любая попытка метода идентифицированного const'ом изменить значение в х приведет к ошибке?
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7840 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
10.04.2013, 11:33 #6
Другими словами константные методы не могут изменять переменных класса и вызывать не константные методы.
1
programina
2046 / 601 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 11:37  [ТС] #7
Croessmah, BumerangSP, спасибо.
Отдельное спасибо за mutable
0
rangerx
1940 / 1549 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
10.04.2013, 15:40 #8
const
0
10.04.2013, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 15:40
Привет! Вот еще темы с ответами:

Что означает знак & в объявлении функции - C++
Здравствуйте, в обучающих статьях о С++ наткнулся на очень интересную синтаксическую конструкцию. Не совсем разобрался с указателями и...

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

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

Что означает оператор "->" в заголовке функции - C++
Встретил такой код: template &lt;typename T, typename T1&gt; auto compose(T a, T1 b) -&gt; decltype(a + b) { return a+b; } Со всеми его...


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

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

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