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

Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? - C++

Восстановить пароль Регистрация
 
hoz
 Аватар для hoz
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 85
25.08.2014, 01:13     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? #1
Назрел такой вопрос: Если объект константный это означает, что ни один его член-элемент или член-метод не изменится или только некоторые из них?

Спрашиваю, потому что прочитал такую вещь:
" Метод с модификатором const называется постоянным и не может модифицировать неявные члены своего класса "

Я так и не понял, не возможность изменения касается только неявных членов или вообще любых членов?

И вообще, что за неявные члены? И что такое явные члены?
Хочу понять, когда применять модификатор const, вот и штудирую данный вопрос.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2014, 01:13     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится?
Посмотрите здесь:

C++ Член-ссылка на другой член класса
C++ скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что?
Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? C++
C++ Одномерные массивы. Найти максимальный член в массиве, начиная со второго член
В последовательности а1,...,a30 поменять местами наибольший член и член с номером m. C++
Может ли объект-член, или объект-элемент достучаться к содержащему его? C++
C++ Поменять местами наибольший член последовательности и член с номером m
Статический константный член-класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6416 / 3790 / 876
Регистрация: 30.01.2014
Сообщений: 6,575
25.08.2014, 01:32     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? #2
Цитата Сообщение от hoz Посмотреть сообщение
Я так и не понял, не возможность изменения касается только неявных членов или вообще любых членов?
Честно говоря первый раз вижу такую формулировку. Но скорее всего имеется в виду следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct B
{
    int a;
};
 
class A
{
public:
    void foo() const
    {
         a = 1; // error "яный член" константен, менять нельзя
         b->a = 1; // ok здесь константен указатель, но указываемые данные спокойно можно менять
    }
 
private:
    int a;
    B * b; 
};
Цитата Сообщение от hoz Посмотреть сообщение
Хочу понять, когда применять модификатор const, вот и штудирую данный вопрос.
Применять нужно всегда, когда нужно продекларировать, что метод не может менять состояние класса.

Добавлено через 6 минут
Цитата Сообщение от hoz Посмотреть сообщение
Если объект константный это означает, что ни один его член-элемент или член-метод не изменится или только некоторые из них?
Кстати, константность может быть логической. Т.е. объект константен, но некоторые его данные нет. Это обеспечивается с помощью mutable.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2014, 01:48     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? #3
Цитата Сообщение от DrOffset Посмотреть сообщение
Кстати, константность может быть логической. Т.е. объект константен, но некоторые его данные нет
В это понятие также входит и изменение данных, адресуемых указателем-членом, как в твоем примере
Yandex
Объявления
25.08.2014, 01:48     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится?
Ответ Создать тему
Опции темы

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