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

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

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

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

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

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

Чем отличаются объявления const char* и const* char - C++
Прошу объяснить мне, чем отличаются объявления const char* и const* char и как объявить: указатель на константный массив символов, ...

Что означает имя переменной в конце объявления структуры? - C++
Всем привет. Что значит такая запись в конце структуры? }*head; И что было бы, если было бы так: }head;? struct Link ...

Const в конце строки - C++
Не могу разобраться с частью кода, программа считает комплексные числа. ComplexNumber const operator + (ComplexNumber const & cmpx)...

Зачем в конце объявления виртуальной функции ноль: virtual void show()=0 ? - C++
Здравствуйте. Что значат строки? И есть ли в них разница? virtual void show()=0; virtual void show(); Может ли быть такая запись? ...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

';' в конце блока метода? - C++
class foo { void print(){} void draw() { bla = bla^2; cout << "bla"; } }; ...

4
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.04.2013, 15:30 #2
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
Не совсем.
Он говорит, что метод можно вызывать для константного экземпляра.
1
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.04.2013, 15:50 #3
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
чего-чего?0_о
Цитата Сообщение от mzarb Посмотреть сообщение
const говорит, что *this будет константным
да
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
24.04.2013, 15:51 #4
Цитата Сообщение от mzarb Посмотреть сообщение
что внутри метода не будут переопределяться поля класса
Полагаю, тут должно быть модифицироваться.
Нет, т.к. mutable никто не отменял.
Нет, т.к. можно снять константность и изменить.
1
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
24.04.2013, 16:00  [ТС] #5
diagon, Это да, то есть при создании объекта const A t; для него нужен будет константный метод, а при создании объекта без const подойдет и константный и неконстантный. Только вот вы написали так, как будто верное только "говорит, что метод можно вызывать для константного экземпляра.", а "говорит, что внутри метода не будут переопределяться поля класса" - не верно. Но как это оно не верно, если можно вызвать константный метод для неконстантного объекта, то есть это говорит просто, что *this станет константным и следовательно можно говорить что нельзя модифицировать поля, которые не объявлены как mutable.

Добавлено через 1 минуту
ForEveR, да, я об этом думал, то есть переопределение - это и объявление и инициализация ещё раз? То есть переопределение невозможно и я напутал)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 16:00
Привет! Вот еще темы с ответами:

Для чего стоит переменная в конце объявления структуры? - C (СИ)
struct STUDENT { char fio; int groupe; }y; Доброго времени суток. У меня вопрос, для чего и что собой представляет в данном...

Вызов метода класса из сторонней функции без объявления объекта - PHP ООП
Собственно вопрос в топике. Можно? т.е. есть некий класс MyMySQLClass() в котором прописаны параметры доступа к БД, инициализация...

const в формальном параметре метода - C#
Добрый день. В С++ можно было гарантировать неизменность передаваемого по ссылке параметра, указав const. В C# ссылочные типы можно...

Вызов атрибута вначале метода и в конце - C#
Здравствуйте. Есть некий метод, к примеру private void UpdateData() { } Выполняется он в течении 10 секунд. В это время...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
24.04.2013, 16:00
Ответ Создать тему
Опции темы

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