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

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

Войти
Регистрация
Восстановить пароль
 
hoz
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 101
#1

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

25.08.2014, 01:13. Просмотров 316. Ответов 2
Метки нет (Все метки)

Назрел такой вопрос: Если объект константный это означает, что ни один его член-элемент или член-метод не изменится или только некоторые из них?

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

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

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

C++ Член-ссылка на другой член класса
Что означает конструкция int(cls::*), если cls - это класс ? C++
C++ Одномерные массивы. Найти максимальный член в массиве, начиная со второго член
В последовательности а1,...,a30 поменять местами наибольший член и член с номером m. C++
C++ Если элемент исходной последовательности встречается один раз, то заменить его на 1, если несколько, то 0
Как создать указатель на функцию-член класса и вызвать его? C++
C++ Поменять местами наибольший член последовательности и член с номером m
Статический константный член-класса C++
Константный метод и константный аргумент в методе C++
Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо C++
C++ Указатель на объект из указателя на член класса
C++ Как реализовать функцию-член, которую можно вызвать только один единственный раз?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6852 / 4063 / 927
Регистрация: 30.01.2014
Сообщений: 6,859
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
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2014, 01:48     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? #3
Цитата Сообщение от DrOffset Посмотреть сообщение
Кстати, константность может быть логической. Т.е. объект константен, но некоторые его данные нет
В это понятие также входит и изменение данных, адресуемых указателем-членом, как в твоем примере
Yandex
Объявления
25.08.2014, 01:48     Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится?
Ответ Создать тему
Опции темы

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