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

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

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

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

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

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

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

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

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

Статический константный член-класса - C++
Добрый день, что компилятору не нравится? VS 2013 // рекурсивное шаблоное метапрограммирование #include <iostream> using namespace...

Одномерные массивы. Найти максимальный член в массиве, начиная со второго член - C++
Как найти максимальный член в массиве, начиная со второго члена?

В последовательности а1,...,a30 поменять местами наибольший член и член с номером m. - C++
Даны натуральное число m, действительные числа а1,..,a30 (числа попарно различны). В последовательности а1,...,a30 поменять местами...

Поменять местами наибольший член последовательности и член с номером m - C++
Помогите в 4 пункте меню сделать вывод на консоль, в файл и защиту если сразу выбрать 4 пункт. #include <stdio.h> #include...

Если элемент исходной последовательности встречается один раз, то заменить его на 1, если несколько, то 0 - C++
1)В последовательности нет 0 и 1. Получить новую по следующей схеме: Если элемент исходной последовательности встречается один раз, то...

Что означает конструкция int(cls::*), если cls - это класс ? - C++
Пример: #include <iostream> #include <type_traits> int main() { class cls {}; std::cout <<...

Константный метод и константный аргумент в методе - C++
Товарищи! Возник вопрос, в чем же разница, между константным методом и ссылкой на const объект в const методе? И использование двух...

Как реализовать функцию-член, которую можно вызвать только один единственный раз? - C++
Доброго времени суток. Моя проблема в том, что при создании экземпляра дочернего класса, выполняется функция DoSmth() хотя, уже есть...

Что такое указатель на член класса? - C++
Что такое указатель на член класса?

Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо - C++
Помогите!!! разработать метод - член класса для определения минимального и максимального элементов одномерного динамического массива и их...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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 Посмотреть сообщение
Кстати, константность может быть логической. Т.е. объект константен, но некоторые его данные нет
В это понятие также входит и изменение данных, адресуемых указателем-членом, как в твоем примере
Ответ Создать тему
Опции темы

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