Результаты поиска по запросу "reinterpret-cast"
reinterpret_cast, char * и неопределенное поведение
Каковы случаи, когда
Работает и для ссылок:
одство FFTWговорит что его
«Опасность» заключается в том, что этот бросок в стиле C может отбрасывать константу.
было много строк, написанных на тему reinterpret_cast, и насколько это плохо, я все еще озадачен лучшим способом избежать этого, особенно когда имеешь дело с функциями, такими как чтение и запись из fstream. Итак, вот моя дилемма ... Допустим, у ...
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
+ без страха: руководство для начинающих, которое заставляет вас чувствовать себя умнымкнига, а в главе (8) упоминается следующее о.... конвертирует из одного типа указателя (intreinterpret_cast ) другому (char *). Поскольку приведение изменяет ...
) и обратно к исходному типу возвращает исходное значение указателя. - конец примечания]
ли (семантическая) разница между возвращаемым значением размещения new и приведенным значением его операнда? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer);Есть лиa а такжеb чем-то ...
@VittorioRomeo: Еще одно редактирование - я склонен это сделать.
отрим следующий сценарий: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()); (*p)[0] = 42;Этонеопределенное поведение? Я думаю, что это. a.data() возвращаетint*, который не совпадает сint(*)[8] правила наложения ...
объяснение. Я также добавил ссылку, подтверждающую ваше требование.
ец кода: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) }Я считаю, что это распространено и считается приемлемым. Стандарт гарантирует, что в структуре нет начального заполнения. Однако ...
Использование литья в стиле C не является безопасным. Он никогда не проверяет, чтобы разные типы можно было смешивать вместе. Приведение типов в C ++ помогает вам убедиться, что приведение типов выполняется в соответствии со связанными объектами (на основе используемого вами приведения). Это более рекомендуемый способ использования приведений, чем использование традиционных приведений в стиле C, которые всегда вредны.
, что я хочу броситьA* вchar* и наоборот, у нас есть два варианта (я имею в виду, многие из нас думают, что у нас есть два варианта,потому что оба, кажется, работают! Отсюда и путаница!) struct A { int age; char name[128]; }; A a; char *buffer ...