Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (type) vs reinterpret_cast<type>, явное приведение в Си и Си++ 
V
    Опции темы
mes
Дата 16.9.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(azesmcar @  16.9.2010,  14:18 Найти цитируемый пост)
, ведь reinterpret_cast вообще только с указателями работает. 

ммм.. разве ? 


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 16.9.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  16.9.2010,  15:28 Найти цитируемый пост)
ммм.. разве ?  

а что, нет? smile 
reference не в счет, это одно и тоже
PM   Вверх
djamshud
Дата 16.9.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



mes, да)


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 16.9.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(azesmcar @  16.9.2010,  14:31 Найти цитируемый пост)
а что, нет? 

интегер в указатель .. хотя если грубо то в принципе можно отнести к "только с указателями"

Добавлено @ 15:41
Цитата(azesmcar @  16.9.2010,  14:31 Найти цитируемый пост)
reference не в счет, это одно и тоже 

ну как сказать.. 

ну вот например : http://codepad.org/Lw5JRCml


Это сообщение отредактировал(а) mes - 16.9.2010, 15:44


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 16.9.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  16.9.2010,  15:40 Найти цитируемый пост)
ну как сказать.. 

ну вот например : http://codepad.org/Lw5JRCml

разница лишь синтаксическая
http://codepad.org/CdLbCjqY
PM   Вверх
mes
Дата 16.9.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(azesmcar @  16.9.2010,  14:47 Найти цитируемый пост)
разница лишь синтаксическая

для interpret`a да, но не для static_cast`a..



--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 16.9.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  16.9.2010,  15:56 Найти цитируемый пост)
для interpret`a да, но не для static_cast`a..

да, но мы ведь сейчас про reinterpret говорим smile 
Цитата(mes @  16.9.2010,  15:28 Найти цитируемый пост)
, ведь reinterpret_cast вообще только с указателями работает. 

ммм.. разве ?  


PM   Вверх
mes
Дата 16.9.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(azesmcar @  16.9.2010,  14:56 Найти цитируемый пост)
да, но мы ведь сейчас про reinterpret говорим

да, но отклонись к этому разговору, в следствии того, чтоб прояснить почему сравниваем касты в контексте указателей. Поэтому если мы принимаем что указатель и референсе дают одинаковый результат, то необходимо примерять сей факт на оба каста.. 



--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 16.9.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  16.9.2010,  16:02 Найти цитируемый пост)
почему сравниваем касты в контексте указателей

сложно сказать smile 
просто я с самого начала полагал, что так и сравниваем, а вы полагали, что иначе. smile 
PM   Вверх
borisbn
Дата 16.9.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(djamshud @  16.9.2010,  15:28 Найти цитируемый пост)
 И что в этом плохого? 

я и не говорил, что плохо
Цитата(borisbn @  16.9.2010,  15:11 Найти цитируемый пост)
всегда так и делал. но тут закрался червь сомнения


Цитата(djamshud @  16.9.2010,  15:28 Найти цитируемый пост)
const_cast это место прекрасно документирует

IMHO и static_cast и reinterpret_cast тоже получше документируют место, чем (), но это - не решающий аргумент, а я как раз хотел увидеть решающий, и не увидел, поэтому пошёл хоронить червя smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 16.9.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(borisbn @  16.9.2010,  15:38 Найти цитируемый пост)
 поэтому пошёл хоронить червя

по отношению к конвертации char * в unsigned char * или в общем случае ? 


--------------------
PM MAIL WWW   Вверх
djamshud
Дата 16.9.2010, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



borisbn,

>IMHO и static_cast и reinterpret_cast тоже получше документируют место, чем (), но это - не решающий аргумент, а я как раз хотел увидеть решающий, и не увидел, поэтому пошёл хоронить червя

Имхо, обычные касты документировать не нужно, т.к. это не хаки. Действительно хак - избавляться от константности. А преоразование типа - это нормальная практика.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
borisbn
Дата 16.9.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(djamshud @  16.9.2010,  16:47 Найти цитируемый пост)
преоразование типа - это нормальная практика.

не считаю это - нормальной практикой. почему если ты ( или кто-то другой ) забыл поставить const, то const_cast - хак, а если ты ( или кто-то другой ) не определил перегруженные функции для всех простых типов, не сделал шаблон, сделал char *, вместо void * - это не хак, а нормально ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
djamshud
Дата 16.9.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



borisbn, принудительное кастование типов происходит не по забывчивости, а по необходимости. Тогда, когда автоматическое не срабатывает. Примеров можно придумать много, начиная от передачи чего-то в printf (ой, как не по-плюсовому!:) ) и заканчивая приведением типов по дереву наследования, когда динамический каст не нужен. Я говорю про такое использование кастования. Когда это происходит по чьей-то забывчивости (читай - глупости) - это конечно хак, и тут наверное обозначить его стоит, хотя хак этот - следствие ошибки, допущенной еще до начала написания кода. Так может лучше исправить первопричину? Про кривые библиотеки знаю. Не пользуюсь.

А использование const_cast - всегда очень тонкое место, будь то грязный хак или гениальный трюк.

Добавлено через 5 минут
ЗЫ. В предыдущем сообщении кривизной я называл грязный хак, а хак by design - гениальный трюк. Сорри за путаницу в терминалогии:).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 16.9.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



djamshud, const_cast - средство языка, так что это по определению не хак.
PM MAIL   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0799 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.