![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Sleepman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 1.1.2005 Где: Санкт-Петербург Репутация: нет Всего: нет |
Сижу читаю Павловскую Т.А. "С/С++ Программирования на ЯВУ"
Натыкаюсь на следующую фразу: Константный метод: ..... ..... - может вызывать только константные методы ..... остальное не важно, но это высказывание ставит под сомнение мой компилятор BCB6.0, который запросто "хавает" следующее:
... и метод get_dolgi работает корректно работает, хотя вызывает НЕконстантный метод в своем теле!! В чем тут прикол?... кто-нибудь объяснит? Благодарен P.S. Может быть это компилятор не отслеживает такие ошибки?... но, тогда почему это работает корректно??? |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Можно редположить что bcb6 считает себя шибко умным и сам помечает get_babki() как const.
Можно предположить, что BCB6 заменяет вызов get_babki() на babki перед проверкой и таким образом ф-ция преобразуется в get_dolgi() const {return dolgi+babki;}. Хотя так быть не должно. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Sleepman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 1.1.2005 Где: Санкт-Петербург Репутация: нет Всего: нет |
Да, забыл сказать... что это вышеупомянутая беда работала и в VisualStudio (проверял не я)
Другой пример... на ту же тему.... более убедительный... и работоспособный...:
и это -РАБОТАЕТ))) получается что .. константный метод... по средствам вызова НЕконстантного меняет значения поля.... ((( |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Sleepman
Покажи мне кто это провепрял в VisualStudio |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Sleepman
А проверяющий случайно не объявил babki вот так:
? Тогда babki м-но изменять в константых методах.
Не верю -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
В GCC такая беда не работает нифига. Линь фарева.
А на счет VisualC++ - также не верю, хотя проверить не могу. |
|||
|
||||
| Sleepman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 1.1.2005 Где: Санкт-Петербург Репутация: нет Всего: нет |
По поводу VisualStudio я же сказал, что проверял не я... но говорят - работало
А вот в bcb все работает... чего-то я в стандарте ничего не нашел по этому поводу (( |
|||
|
||||
| np9mi7 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
, в константном методе вызываешь не константный, вот компилятор и ругается. Те по сути применяя этот метод к константному объекту, ты пытаешся его изменить - а он константный
Это сообщение отредактировал(а) np9mi7 - 30.6.2005, 20:03 |
||||
|
|||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Некоторое время назад мы обсуждали этот борладовское ограничение тут.
Это сообщение отредактировал(а) srd - 3.7.2005, 15:04 -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Sleepman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 1.1.2005 Где: Санкт-Петербург Репутация: нет Всего: нет |
Ясно... неправильно, но вместо Error'a .. выдается Warning...
издержки bcb :-) Спасибо всем) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |