cast notation
От: igna Россия  
Дата: 08.12.05 09:31
Оценка:
Использую static_cast, const_cast и reinterpret_cast для явного преобразования типа со времени появления этой возможности. Однако явное преобразование типа в стиле C (cast notation) до сих пор не deprecated, а читается заметно легче. Ну и сестра таланта опять же.


        char* pc = reinterpret_cast<char*>( 0x40000000 );
        int* pi = static_cast<int*>( static_cast<void*>( pc ) );


        char* pc = (char*) 0x40000000;
        int* pi = (int*) pc;


Что вы думаете по этому поводу?
Re: cast notation
От: Bell Россия  
Дата: 08.12.05 09:37
Оценка:
Здравствуйте, igna, Вы писали:

I>Что вы думаете по этому поводу?

Краткость записи — несомненный плюс C-style каста
Но я использую его только для каста числовых выражений — типа
int i = ...;
short s = (short)i;


Во всех остальных случаях использую C++ — касты.
Любите книгу — источник знаний (с) М.Горький
Re: cast notation
От: ekamaloff Великобритания  
Дата: 08.12.05 09:42
Оценка:
Здравствуйте, igna, Вы писали:

I>Что вы думаете по этому поводу?


Представьте что есть информация о наличии в коде неверного приведения типов. Что будет проще найти: приведения в старом стиле или static_cast, reinterpret_cast, const_cast, dynamic_cast? Только не подумайте что я считаю это основным аргументом...
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[2]: cast notation
От: MaximE Великобритания  
Дата: 08.12.05 10:53
Оценка: +2
On Thu, 08 Dec 2005 09:42:53 -0000, ekamaloff <48275@users.rsdn.ru> wrote:

> Здравствуйте, igna, Вы писали:

>
> I>Что вы думаете по этому поводу?
>
> Представьте что есть информация о наличии в коде неверного приведения типов. Что будет проще найти: приведения в старом стиле или static_cast, reinterpret_cast, const_cast, dynamic_cast?

Это в точности то, что Страуструп написал в своей книжке.

Замечу, что за все время использования С++ мне не приходилось искать cast.

Проблема с С-кастом в том, что у него слишком "широкие" полномочия. К примеру, если ты использовал С-каст для даункаста parent->child, и если в один прекрасный день child перестал наследовать parent, это каст тихонько будет делать reinterpret_cast, вместо static_cast. Если же ты использовал static_cast, то код перестанет компилироваться, и ты сможешь обнаружить ошибку до запуска отладчика.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.