Использую 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;
Что вы думаете по этому поводу?
Здравствуйте, igna, Вы писали:
I>Что вы думаете по этому поводу?
Краткость записи — несомненный плюс C-style каста
Но я использую его только для каста числовых выражений — типа
int i = ...;
short s = (short)i;
Во всех остальных случаях использую C++ — касты.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
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 YegorushkinPosted via RSDN NNTP Server 2.0