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

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

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

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

24.04.2013, 15:05. Просмотров 597. Ответов 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 константным?
Посмотрите здесь:

Что означает имя переменной в конце объявления структуры? - 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(); Может ли быть такая запись? ...

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

Работа с константным указателем - C++
Ребят, добрый всем вечер!!! Помогите пожалуйста разобраться с задачей. есть константный указатель на строку LPCSTR FileName =...

Пузырьковая сортировка с константным размером массива - C++
Здравствуйте! Объясните пожалуйста как так получается? есть массив в котором провожу пузырьковую сортировку... #include<iostream> ...

Сложность с константным значением (массив указателей на функцию) - C++
Всем привет. Прошу помощи. Задача такая: Реализовать функцию сортировки методом вставки. В качестве условия должна быть описана...

Как сделать массив указателей на функции константным? - C++
Где нужно вставить слово const чтобы этот массив был константным? По разному пробовал и постоянно ошибки double (*ptr_Func)(double,...

А какая разница между константным параметром и неконстантным в функции - C++
Здравствуйте! 1. Если использовать просто неконстантный параметр string, то ничего не изменится и программа будет работать? 2. Функция...

Передача параметров по значению и по константным ссылкам применительно к шаблонам - C++
Такс... С xvalue разобрались, вопрос следующий. Допустим у меня есть шаблон некой операции. Например template<typename T> ...

Зачем в случае присваивания делают ссылку/указатель на аргумент константным - C++
Здравствуйте, позвольте я задам вопрос по С++ 1) void Class::set(const int & i) { qwerty = i; } Зачем в случае присваивания...

Разница между объявлениями const Person p1 и Person const p1 - C++
Всем привет. Собственно весь вопрос уместился в заголовок: в чем разница между объявлениями const Person p1 и Person const p1, если...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.04.2013, 15:30     const в конце объявления метода делает только *this константным? #2
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
Не совсем.
Он говорит, что метод можно вызывать для константного экземпляра.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.04.2013, 15:50     const в конце объявления метода делает только *this константным? #3
Цитата Сообщение от mzarb Посмотреть сообщение
говорит, что внутри метода не будут переопределяться поля класса
чего-чего?0_о
Цитата Сообщение от mzarb Посмотреть сообщение
const говорит, что *this будет константным
да
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 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 константным?
Ответ Создать тему
Опции темы

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