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

Константные методы и объекты класса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
gefest58
6 / 6 / 1
Регистрация: 18.08.2010
Сообщений: 97
30.07.2013, 17:30     Константные методы и объекты класса #1
Это необходимость, или явная подстраховка того, что бы объект (константный) работал с себе подобными методами класса ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 17:30     Константные методы и объекты класса
Посмотрите здесь:

Константные объекты C++
C++ Константные статические объекты класса.
C++ Константные функции-члены класса, возвращающие ссылку на константу
C++ константные поля и методы
константные поля класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
30.07.2013, 17:34     Константные методы и объекты класса #2
gefest58, у константного объекта могут быть вызваны только константные методы, так что в данном случае это необходимость.
А вообще лучше спросить на конкретном примере что не ясно.
gefest58
6 / 6 / 1
Регистрация: 18.08.2010
Сообщений: 97
30.07.2013, 17:45  [ТС]     Константные методы и объекты класса #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
class blala{
private:
int rs;
public:
blala(int n) : rs(n)
{}
void read()
{
cin >> rs;
}
void str()const
{
cout << rs;
}
};
main(){
const blala ret(4);
ret.str();
}
И объект, и метод должны типа const. Но для чего это применяется ? Для случая, когда программист забудет, с какими методами объекту работать, а с какими нет или как ?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
30.07.2013, 17:48     Константные методы и объекты класса #4
gefest58, константность - гарантия того, что объект не изменится. Как следствие - уменьшение количества логических ошибок. Согласитесь, было бы странным, если бы вывод объекта в поток изменял сам объект.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
30.07.2013, 17:52     Константные методы и объекты класса #5
Цитата Сообщение от gefest58 Посмотреть сообщение
И объект, и метод должны типа const.
Объект не должен. У неконстантного объекта можно вызывать константные методы. Наоборот - нельзя. И нужно это для того, чтобы ненароком не изменить чего не надо:
1) если объект константный, у него нельзя вызывать методы, которые меняют его, что логично:
2) если метод константный, он не должен менять состояние объекта. Если же по недосмотру меняет, ошибка отлавливается уже на этапе компиляции.
gefest58
6 / 6 / 1
Регистрация: 18.08.2010
Сообщений: 97
30.07.2013, 20:42  [ТС]     Константные методы и объекты класса #6
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 20:45     Константные методы и объекты класса
Еще ссылки по теме:

Где инициализировать константные данные класса? C++
C++ Дублирование кода и константные методы
C++ Классы и объекты в С++, компонента класса и экземпляр класса

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.07.2013, 20:45     Константные методы и объекты класса #7
Цитата Сообщение от gefest58 Посмотреть сообщение
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
этом метод не меняет состяние объекта, зачем ему быть НЕ константным?
Yandex
Объявления
30.07.2013, 20:45     Константные методы и объекты класса
Ответ Создать тему
Опции темы

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