|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.07.2012, 21:02 | #11 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Рассмотрим пример: Код:
Код:
Я уж не говорю, что сишное приведение вообще ничем не отличается от рентерп_каста. Только синтаксисом. Последний раз редактировалось _Bers; 23.07.2012 в 21:05. |
|
23.07.2012, 21:12 | #12 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Может разные компиляторы по разному обрабатывают эту операцию? Может где-то какой-то компиль всетки преобразовывает как-нибудь хитро?
I'm learning to live...
|
|
23.07.2012, 21:21 | #13 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
А последний отличается от первого только отсутствием проверок. Итого: можно считать, что сишное приведение ничем не отличается от реинтерп_каста. |
|
23.07.2012, 22:02 | #14 | ||
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
Код:
Цитата:
|
||
23.07.2012, 22:14 | #15 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Только, если честно, то я так и не понял: почему статик_каст прокатил, а реинтерпрет_каст не прокатил |
|
23.07.2012, 22:20 | #16 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Как я писал выше, reinterpret_cast используется для указания интерпретировать нечто, как что-то другое. То есть не преобразовывать его по-настоящему, а лишь интерпретировать иначе. Например считать, что некая переменная ptr имеет не тип int *, а double *, или что значение в переменной типа size_t на самом деле указатель char *. static_cast производит непосредственно преобразование, с усечением данных когда надо, или вызовом конструктора.
|
23.07.2012, 22:25 | #17 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Читаю: реинтерпрет_каст не позволяет приводить одно значение к другому. Не вижу возможности проверить: он что, действительно только меняет интерпретацию ничего не создавая? Когда я им указатели привожу, у меня разве не создаются временные копии новых объектов-указателей? |
|
23.07.2012, 22:32 | #18 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
Код:
|
|
23.07.2012, 22:59 | #19 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Есть некий сложный механизм. Задача которого - низкоуровневая работа с некоторым неопределенным количеством аргументов. Не буду вдаваться в подробности. Спрашиваю, как знатока(!) плюсов. Задача - передача данных (типа и значения аргументов), и при этом максимально избежать потерь на конструкторы копий. Ниже представлен код: Код:
какие тут могут быть проблемы, и как гарантировать безопасную работу? А то мало ли - компиль чего нибудь соптимизирует. Последний раз редактировалось _Bers; 23.07.2012 в 23:02. |
|
24.07.2012, 01:13 | #20 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
Переменное кол-во значений обязательно? Было бы лучше поискать альтернативные решения (например просто определить Bar как ф-цию, которая принимает указатели или ссылки), потому как любой из способов для плюсов будет не типо-безопасным (разве только шаблоны переменной длины из C++11). |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
malloc в С++ | _Kitten_ | Помощь студентам | 2 | 12.12.2011 19:20 |
Malloc | Sabin4ik | Общие вопросы C/C++ | 12 | 18.02.2011 01:13 |
функция malloc() для разного типа переменной. | Serjuk | Помощь студентам | 46 | 05.01.2010 21:52 |
SIEGSEGV в malloc() | TheVampire | Общие вопросы C/C++ | 0 | 25.09.2009 14:32 |
Проблема с malloc | Обледеневший | Общие вопросы C/C++ | 7 | 14.09.2009 18:06 |