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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
gefest58
6 / 6 / 1
Регистрация: 18.08.2010
Сообщений: 97
#1

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

30.07.2013, 17:30. Просмотров 2266. Ответов 6
Метки нет (Все метки)

Это необходимость, или явная подстраховка того, что бы объект (константный) работал с себе подобными методами класса ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 17:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Константные методы и объекты класса (C++):

Константные статические объекты класса. - C++
Здравствуйте. Есть класс "матрица" нужно задать константные матрицы такие как E - единичная матрица и т.д., как это сделать? #include...

Объекты производного класса не наследуют методы базового - C++
Доброго всем дня! Вот такая у меня проблема возникла - объекты производного класса свободно вычитаются, но почему-то не складываются,...

Константные объекты - C++
#include <iostream> #include <windows.h> using namespace std; class CTest { public: int A,B; CTest(int Aval,int...

Указатели на константные объекты - C++
Нельзя создать неконстантный указатель на константный объект по понятным причинам, но имеем такой код: typedef char* pStr; int...

Константные поля и методы - C++
А можете объяснить, что такое константные поля и методы в классах?

Как правильно объявлять статические константные объекты в классе? - C++
В классе надо объявить статичные константные строки. Типа class A { public: static const std::string OLOLO = "ololo"; } Но так...

6
0x10
2548 / 1728 / 264
Регистрация: 24.11.2012
Сообщений: 4,348
30.07.2013, 17:34 #2
gefest58, у константного объекта могут быть вызваны только константные методы, так что в данном случае это необходимость.
А вообще лучше спросить на конкретном примере что не ясно.
1
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. Но для чего это применяется ? Для случая, когда программист забудет, с какими методами объекту работать, а с какими нет или как ?
0
0x10
2548 / 1728 / 264
Регистрация: 24.11.2012
Сообщений: 4,348
30.07.2013, 17:48 #4
gefest58, константность - гарантия того, что объект не изменится. Как следствие - уменьшение количества логических ошибок. Согласитесь, было бы странным, если бы вывод объекта в поток изменял сам объект.
1
Fyret
200 / 186 / 20
Регистрация: 30.07.2013
Сообщений: 392
30.07.2013, 17:52 #5
Цитата Сообщение от gefest58 Посмотреть сообщение
И объект, и метод должны типа const.
Объект не должен. У неконстантного объекта можно вызывать константные методы. Наоборот - нельзя. И нужно это для того, чтобы ненароком не изменить чего не надо:
1) если объект константный, у него нельзя вызывать методы, которые меняют его, что логично:
2) если метод константный, он не должен менять состояние объекта. Если же по недосмотру меняет, ошибка отлавливается уже на этапе компиляции.
0
gefest58
6 / 6 / 1
Регистрация: 18.08.2010
Сообщений: 97
30.07.2013, 20:42  [ТС] #6
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.07.2013, 20:45 #7
Цитата Сообщение от gefest58 Посмотреть сообщение
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
этом метод не меняет состяние объекта, зачем ему быть НЕ константным?
0
30.07.2013, 20:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 20:45
Привет! Вот еще темы с ответами:

Дублирование кода и константные методы - C++
Есть метод method возвращающий ссылку на внутреннее значение объекта. Существует в двух вариантах - константный и обычный. Константная...

Константные поля класса - C++
Такой вопрос, как инициализировать константные поля класса? Работают конструкции вида obj():t(0){}; который используется в примере ниже. А...

Константные и не константные ссылки. Приведения типов. Нужно уточнение - C++
Не очень понимаю в чем различие (2,3 строчки). int x = 10; double &amp;y = x; const double &amp;y = x; Почему для не...

Где инициализировать константные данные класса? - C++
Вот ошибка: в пределах класса могут быть инициализированы только статестические константы данные-члены целого типа. private: string...


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

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

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