Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2012, 21:36   #11
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Тот же Страуструп не советует использовать приведение типов в Си-стиле, когда есть набор явных кастов. См. например "Специальное издание", параграф Б.2.3., последний абзац.
А он не говорил, почему?

Код:
    int a=100;
    char b = (char)(&a);  //ups
    
    char d = reinterpret_cast<char>(&a); //ups

    //сработала защита времени компиляции
    //: error C2440: static_cast: невозможно преобразовать 'int *' в 'char'
    //char c = static_cast<char>(&a);
На самом деле приведение в стиле си абсолютно аналогично "грязному_касту", как я называю reinterpret_cast
Но намного короче и приличнее выглядит.

Вместо того, что бы писать длинную и неуклюжею:
Код:
char d = reinterpret_cast<char>(&a);
Можно сделать короткую:
Код:
char b = (char)(&a);
Идеологически, грязный_каст - это указание компилятору "я знаю что делаю", и компилятор понижает уровень защиты, позволяя программисту выполнять приведение не вполне совместимых типов.

Собственно, это единственное назначение грязного_каста.
И использовать его для других целей просто нежелательно, да и казалось бы не нужно. Ведь для всех остальных случаев лучше использовать безопасный статик_каст с полноценной защитой.

А проблема кастов заключается в том(!), что использовать грязный_каст на практике намного удобнее, чем безопасный статик_каст

И это вообще глобальная проблема языка с++. На этом языке использование небезопасных механизмов намного проще и удобнее, чем использование безопасных.

Раздолбайский язык.

Последний раз редактировалось _Bers; 15.07.2012 в 23:09.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись и чтение бинарного файла Стремящийся Общие вопросы C/C++ 4 27.05.2012 17:33
Чтение из бинарного файла lioc C# (си шарп) 10 20.02.2012 21:12
чтение бинарного файла Snake22 Общие вопросы Delphi 1 23.01.2012 07:44
чтение из бинарного файла Kukurudza Общие вопросы C/C++ 6 08.09.2011 19:09
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31