![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
boostcoder
а где тут приведение указателя на базовый тип к указателю на потомка? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
azesmcar, та нет. я хотел показать что без каста такое невозможно.
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это да. но конкретно по этому спору я ничего не имею против. меня зантересовало утверждение о зле кастов, и о том, что касты свидетельство ошибки проектирования. Добавлено через 3 минуты и 44 секунды
речь об этом?:
http://liveworkspace.org/code/15f2508fa76c...b707a3e1dda6f12 а что тут незаконного? или я что-то упустил? |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
каст действительно во многих случаях является ошибкой программирования, но в основном в тех, когда (по неопытности) программист предпочитает каст, взамен более удобному и безопасному инструменту для той задачи.. но.. каст нужная вещь, и очень часто примененная с умом с позволяет добиться нужного поведения наиболее коротким способом.. опять же каст в первом и во втором случае визуально можно практически с налету определить.. т.е. не сам кас зло, а его "неправильное" применение.. но опять таки, если не до конца понимать, что предлагает нам каст, очень легко совершитьошибки, которые трудно отловить.. Добавлено через 51 секунду естественно в данном случае идет об _опасных_ кастах.. какие именно входят в этот список, надеюсь уточнять не надо ![]() |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это все понятно. с таким же успехом можно сказать и о наследовании. и о программировании в целом. и естественно, предполагается, что прогер наделен моцгом. иначе не каст станет серьезной ошибкой, а сам факт существования такого прогера ![]() Добавлено через 6 минут и 19 секунд хм.. ладно, компилятор недоволен. но на практике это к чему привести может в том случае, что подобный каст используется только в приведенном примере?:
http://liveworkspace.org/code/aaeea40f6406...fc4d55be44c2c25 зы на практике никогда такого не делал. честное слово. |
|||
|
||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Нет, почему же. Необходимость делать downcast должна настораживать программиста, а например необходимость использования оператора if - нет, впрочем как и использование наследования.
Не сам cast является серьезной ошибкой, а cast возможно является последствием ошибки дизайна, что в общем-то не исключает пользу от cast-ов в некоторых ситуациях.
Где тут cast? Я вообще понятия не имею как этот пример компилируется (если компилируется) и как компилятор должен повести себя в такой ситуации.
|
||||||||
|
|||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
наследование это инструмент снимающий нагрузку с программиста, хотя неправильное применеие и может создать проблемы, но в большей степени архитектурные, и ошибки связанные с неправильным применением наследования относительно легко выявляются и большинство на стадии компиляции.. в отличии от этого каст является инструментом снимающим ответственность с компилятора, а следовательно возлагающего ее на программиста, в дополнение к тому большинство ошибок связанных с ним очень трудно уловимые, и именно поэтому желательно сокращать кол-во зависимого на каст кода.. и если есть в нем необходимость, желательно оборачивать каст в более безопасные конструкции.. Добавлено через 4 минуты и 52 секунды вот взять к примеру crtp, хотя и используется каст, но он завязан на наследовании и поэтому возможность ошибки мала, так как компилятор в состоянии проверить легальность всей конструкции.. Это сообщение отредактировал(а) mes - 3.6.2011, 17:14 |
|||
|
||||
cupper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
когда я писал пост http://forum.vingrad.ru/index.php?showtopi...t&p=2356159
этот же online компилятор выдавал мне приведенный error. Сейчас он компилирует код. О_о
http://liveworkspace.org/code/a449910606cf...37cf3deb0d590f6 Девид Блейн, отдыхает. Это сообщение отредактировал(а) cupper - 3.6.2011, 18:11 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
значит, все же, struct отличается от class в с++ Добавлено через 7 минут и 30 секунд
http://liveworkspace.org/code/8f1f86dea05b...807f74b33a42c98 все таки разницы никакой ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это моя вина. я кое-что проверял вчера днем, и добавил в опции "-fpermissive". исправил. сорри ![]() теперь нужно все тесты проверять заново.. Добавлено @ 18:29 мля.. нехорошо получилось.. Это сообщение отредактировал(а) boostcoder - 3.6.2011, 18:29 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |