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

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

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

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

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

Что означает идендификатор const в обьявлении функции? Например:
C++
int if_R() const; // ОНА ВОЗВРАЩАЕТ КОНСТАНТУ??????
 
// и можно ли писать так:
 
const int if_R();
 
// если да, то есть ли разница?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12729 / 7189 / 802
Регистрация: 27.09.2012
Сообщений: 17,736
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 11:23     Что означает идендификатор const в обьявлении функции? #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;}
}
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.04.2013, 11:24     Что означает идендификатор const в обьявлении функции? #3
Если не ошибаюсь, то в первом случае метод не будет изменять значений объекта.
а const int if_R возвращает константное значение.
Croessmah
Модератор
Эксперт CЭксперт С++
12729 / 7189 / 802
Регистрация: 27.09.2012
Сообщений: 17,736
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 11:24     Что означает идендификатор const в обьявлении функции? #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;}
};
programina
1913 / 598 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 11:28  [ТС]     Что означает идендификатор const в обьявлении функции? #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'ом изменить значение в х приведет к ошибке?
Croessmah
Модератор
Эксперт CЭксперт С++
12729 / 7189 / 802
Регистрация: 27.09.2012
Сообщений: 17,736
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 11:33     Что означает идендификатор const в обьявлении функции? #6
Другими словами константные методы не могут изменять переменных класса и вызывать не константные методы.
programina
1913 / 598 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 11:37  [ТС]     Что означает идендификатор const в обьявлении функции? #7
Croessmah, BumerangSP, спасибо.
Отдельное спасибо за mutable
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 15:40     Что означает идендификатор const в обьявлении функции?
Еще ссылки по теме:

C++ Что означает оператор "->" в заголовке функции
Const после функции C++
C++ Обращение к контейнеру в const функции
Что означает знак & в объявлении функции C++
Что означает "_t" в имени функции? C++

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

Или воспользуйтесь поиском по форуму:
rangerx
1923 / 1532 / 139
Регистрация: 31.05.2009
Сообщений: 2,896
10.04.2013, 15:40     Что означает идендификатор const в обьявлении функции? #8
const
Yandex
Объявления
10.04.2013, 15:40     Что означает идендификатор const в обьявлении функции?
Ответ Создать тему
Опции темы

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