Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
6 / 6 / 0
Регистрация: 18.08.2010
Сообщений: 97
1

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

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

Author24 — интернет-сервис помощи студентам
Это необходимость, или явная подстраховка того, что бы объект (константный) работал с себе подобными методами класса ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2013, 17:30
Ответы с готовыми решениями:

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

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

Константные объекты
#include <iostream> #include <windows.h> using namespace std; class CTest { public: int...

Указатели на константные объекты
Нельзя создать неконстантный указатель на константный объект по понятным причинам, но имеем такой...

6
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
30.07.2013, 17:34 2
gefest58, у константного объекта могут быть вызваны только константные методы, так что в данном случае это необходимость.
А вообще лучше спросить на конкретном примере что не ясно.
1
6 / 6 / 0
Регистрация: 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
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
30.07.2013, 17:48 4
gefest58, константность - гарантия того, что объект не изменится. Как следствие - уменьшение количества логических ошибок. Согласитесь, было бы странным, если бы вывод объекта в поток изменял сам объект.
1
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
30.07.2013, 17:52 5
Цитата Сообщение от gefest58 Посмотреть сообщение
И объект, и метод должны типа const.
Объект не должен. У неконстантного объекта можно вызывать константные методы. Наоборот - нельзя. И нужно это для того, чтобы ненароком не изменить чего не надо:
1) если объект константный, у него нельзя вызывать методы, которые меняют его, что логично:
2) если метод константный, он не должен менять состояние объекта. Если же по недосмотру меняет, ошибка отлавливается уже на этапе компиляции.
0
6 / 6 / 0
Регистрация: 18.08.2010
Сообщений: 97
30.07.2013, 20:42  [ТС] 6
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
30.07.2013, 20:45 7
Цитата Сообщение от gefest58 Посмотреть сообщение
вот опять никак не пойму, в книжке, методу, который выводит две строчки на экран, дают приписку const. Зачем ????
этом метод не меняет состяние объекта, зачем ему быть НЕ константным?
0
30.07.2013, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2013, 20:45
Помогаю со студенческими работами здесь

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

Как правильно объявлять статические константные объекты в классе?
В классе надо объявить статичные константные строки. Типа class A { public: static const...

Константные и неконстантные методы в классе
Здравствуйте! Вот задача https://stepik.org/lesson/563/step/6?unit=886 Я наверное не очень...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru