![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
повторяю, несовместимыми их делает не компилятор под названием "вставить название по своему желанию" а стандарт, который не гарантирует, что их размеры совпадают. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не совсем понятно что имелось ввиду по отношению к static_cast. с учетом стандарта, не понятно при чем тут вообще vtable |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
я же показал на примере.
а где в процитированном сообщении я говорил про vtable? я вообще уже перестал понимать предмет спора, вопрос был ответ - нет, не всегда. причем тут стандарт? про стандарт я писал в другом сообщении, по другому вопросу и вообще не Вам. Это сообщение отредактировал(а) azesmcar - 16.9.2010, 12:39 |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в процитицированном не было.. но в двух подряд сообщениях Вы придерживаетесь разных позиций по отношению к стандарту ))
опять же если касательно стандарта, то размер указателей непричем, стандарт просто его (преобразование) не допускает. вопрос был не для случая, когда преобразование не возможно, а наоборот когда возможен.
связано с тем, что слова "проверка" не достаточно для показания разницы поведения между обсуждаемыми кастами. вот именно, не только проверка их различает Это сообщение отредактировал(а) mes - 16.9.2010, 12:49 |
||||
|
|||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
если компилятор поддерживает определенные ABI где размеры совпадают, то мы знаем в киких случаях размеры совпадут и можем это использовать. |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
где? В одном сообщении я говорил о совместимости, о термине совместимость и том, какой смысл в него вкладывается. В другом сообщении речь шла о совсем другой теме, раз мы говорим о C++ то стандарт надо упоминать всегда и везде, и не важно о чем мы говорим и в каком контексте?
наш спор был НЕ про reinterpret_cast и то, почему это преобразование не допускается, а про то, что размеры void* и указателя на member функцию несовместимы. Напомню если вы тоже считаете их совместимыми - тогда можем поспорить. а я будто возражаю? я лишь допустил, что не разрешает ИМЕННО из за несовместимости этих указателей.
есть еще много чего, множество исключений, разных поведений для разных типов, множество undefined behavior -ов..всего не перескажешь.
...для написания непереносимого кода, и все таки это не делает их совместимы. Это сообщение отредактировал(а) azesmcar - 16.9.2010, 12:55 |
||||||||
|
|||||||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
когда есть зависимость от размера, то в стандарте так и пишут :
а в данном случае для преобразования учтена только одна возможность :
Это сообщение отредактировал(а) mes - 16.9.2010, 12:55 |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Хорошо переформулирую :
на
Добавлено через 2 минуты и 40 секунд уже |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
А по моему очень даже характеризует, по моему это и есть основное различие. Лично я reinterpret_cast использую крайне редко, но использую только тогда, когда я лучше компилятора знаю что мне нужно и мне не нужны его проверки. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
я так и почуствовал, поэтому и заострил внимание.. если при возможном преобразовании возможны различные результаты для случаев с применением разных кастов, то как "проверка" может повлиять на результат ? Добавлено через 4 минуты и 5 секунд
Если оба преобразования возможны, но дают разный результат, то при чем тут "проверка" ? |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
boostcoder, спасибо за ссылку на Алёну ( +1 ). Очень просто и понятно всё рассказано.
Тему закрываю, хотя подозреваю, что война здесь ещё не закончена -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| azesmcar |
|
||||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
mes
давайте сравним описания на разных источниках http://msdn.microsoft.com/en-us/library/e0w9f63b(VS.80).aspx
http://www.cppreference.com/wiki/keywords/reinterpret_cast
http://www.cplusplus.com/doc/tutorial/typecasting/
http://publib.boulder.ibm.com/infocenter/c...erpret_cast.htm
все источники как один утвеждают одно - reinterpret_cast грубой говоря производит преобразование одного типа в другой, даже если они никак не связаны (другими словами без проверки на связанность).
reinterpret_cast много чего не учитывает, но это уже как следствие. |
||||||||||
|
|||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
с "грубой силой" согласен, а вот с "другими словами" - нет. static_cast не осуществляет проверку на связанность, а преобразовывает в соответствии с пользовательскими преобразованиями (естественно что речь о пользовательских типах). Добавлено через 2 минуты и 4 секунды
акцент не на reinterpret_cast, которому и не нужно ничего этого учитывать а на static_cast, поведение которого определяется не только проверкой на связанность. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |