Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Является ли затратным приведение типов?


Автор: manking 16.11.2011, 01:57
например 
char * массив;

функция( (unsigned char *)массив  );

1) Такое приведение предназначено для компилятора или выполняется по ходу выполнения?
2) Функция отработает за такое же время как и без приведения?


Автор: volatile 16.11.2011, 02:18
не затратно.
ваше приведение а частности, абсолютно не затратно. Оно лишь говорит компилятору как интерпретировать.

Автор: manking 16.11.2011, 02:27
Цитата(volatile @ 16.11.2011,  02:18)
не затратно.
ваше приведение а частности, абсолютно не затратно. Оно лишь говорит компилятору как интерпретировать.

А если из void *?
void * указатель;

do
{
... =  *(std::string*)указатель;
... = *(int*)указатель2;
}


Автор: volatile 16.11.2011, 02:36
manking, не затратно.  smile 

Автор: manking 16.11.2011, 02:38
Цитата(volatile @ 16.11.2011,  02:36)
manking, не затратно.  smile

Спасибо.  smile 

Автор: azesmcar 16.11.2011, 07:24
manking

Затратно только динамическое приведение типов, т.е. dynamic_cast.

Автор: borisbn 16.11.2011, 08:47
manking, такое приведение может быть очень и очень затратным (с точки зрения затрат человеческих, а не ЦП), если допустить логическую ошибку.
Например
Код
std::string str = "bla bla";
char * p = (char*)(&str);

Такой код скомпилируется без ошибок и дай бог, если вылетит при первом использовании.
Короче, в идеале желательно обходиться без такого рода приведений. Максимум static_cast.

Автор: mes 16.11.2011, 09:07
borisbn, а тс точно в курсе про С++ ? smile 

Автор: borisbn 16.11.2011, 09:12
mes, не знаю, но ружьё, думаю, стОит отобрать сразу  smile 

Автор: rumit7 16.11.2011, 10:32
Цитата(manking @ 16.11.2011,  01:57)
например 
char * массив;

функция( (unsigned char *)массив  );

1) Такое приведение предназначено для компилятора или выполняется по ходу выполнения?
2) Функция отработает за такое же время как и без приведения?

Вот http://www.agner.org/optimize/optimizing_cpp.pdf в пункте 7.11 обсуждается стоимость различных приведений типов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)