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

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

Войти
Регистрация
Восстановить пароль
 
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
#1

const в конце объявления метода делает только *this константным? - C++

24.04.2013, 15:05. Просмотров 581. Ответов 4
Метки нет (Все метки)

То есть const в методе
C++
1
int foo(int x, int y) const;
говорит, что внутри метода не будут переопределяться поля класса, а точнее const говорит, что *this будет константным? И на этом все?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 15:05     const в конце объявления метода делает только *this константным?
Посмотрите здесь:

Cannot convert 'const wchar_t *' to 'const char *' C++
';' в конце блока метода? C++
C++ Что это bool operator== (const CLASS&) const;
C++ const& и const* в имени функции
C++ Const в конце строки
C++ Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения
C++ Чем отличаются объявления const char* и const* char
C++ Зачем в конце объявления виртуальной функции ноль: virtual void show()=0 ?
C++ Работа с константным указателем
Пузырьковая сортировка с константным размером массива C++
C++ Модификатор const для параметра функции не const?
C++ Что означает имя переменной в конце объявления структуры?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.04.2013, 15:30     const в конце объявления метода делает только *this константным? #2
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
Не совсем.
Он говорит, что метод можно вызывать для константного экземпляра.
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.04.2013, 15:50     const в конце объявления метода делает только *this константным? #3
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
чего-чего?0_о
Цитата Сообщение от mzarb Посмотреть сообщение
const говорит, что *this будет константным
да
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.04.2013, 15:51     const в конце объявления метода делает только *this константным? #4
Цитата Сообщение от mzarb Посмотреть сообщение
что внутри метода не будут переопределяться поля класса
Полагаю, тут должно быть модифицироваться.
Нет, т.к. mutable никто не отменял.
Нет, т.к. можно снять константность и изменить.
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
24.04.2013, 16:00  [ТС]     const в конце объявления метода делает только *this константным? #5
diagon, Это да, то есть при создании объекта const A t; для него нужен будет константный метод, а при создании объекта без const подойдет и константный и неконстантный. Только вот вы написали так, как будто верное только "говорит, что метод можно вызывать для константного экземпляра.", а "говорит, что внутри метода не будут переопределяться поля класса" - не верно. Но как это оно не верно, если можно вызвать константный метод для неконстантного объекта, то есть это говорит просто, что *this станет константным и следовательно можно говорить что нельзя модифицировать поля, которые не объявлены как mutable.

Добавлено через 1 минуту
ForEveR, да, я об этом думал, то есть переопределение - это и объявление и инициализация ещё раз? То есть переопределение невозможно и я напутал)
Yandex
Объявления
24.04.2013, 16:00     const в конце объявления метода делает только *this константным?
Ответ Создать тему
Опции темы

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