![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Annihilator |
|
||||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Цитата из Стандарта пункт 9.3.2
Т.е . const-функция не может изменить объект. А если так...
Да, с помощью *this мы бы не смогли такое проделать, и если бы написали вот так
тоже бы получили ошибку, но при передаче по неконстантной ссылке, компилятор проглатывает это и в итоге имеем измененный объект myclass k. В итоге получается, что обошли константность функции. Что скажете на это, товарищи. Это сообщение отредактировал(а) Annihilator - 24.7.2008, 21:35 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||||
|
|||||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
"shall not modify the object" -- Вероятно имеется в виду невозможность изменения именно объекта this, а не какого-то другого экземпляра?...
--------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не обошли - в данном случае k и k разные обьекты квалификатор const относится к this т.е если мы развернем функцию то получится
|
|||
|
||||
| Annihilator |
|
||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
это бесспорно, но в итоге после возврата в main() имеем измененный
и именно в нем k.c равна не 2, как в начале, а 222. -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
так в этом ничего удивительного нет.. переменая не отмечена как const объект не константный ссылка не константная a const у метода распространяется только на this |
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
может я стандарт плохо посмотрел, может ссылку кинешь? Ага нашел! Но тем не менее константность перехитрили Это сообщение отредактировал(а) Annihilator - 24.7.2008, 22:30 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Annihilator, вы не пробовали предложения целиком читать? Меня в школе учили, что они несут смысловое единство...
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
-------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
неа Вы нигде не нарушили константность, то что Вы продекларивали метод константным, не говорит что объект стал константным ваш пример аналогичен следуюшему (без классов)
|
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Ulysses4j, ты не то привел.
Вот это надо
mes, согласен. Обманули себя Это сообщение отредактировал(а) Annihilator - 24.7.2008, 22:52 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Annihilator, я привел первую часть той фразы, которая была цитирована в первом посте. И считаю, что это то.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |