Герой дня |
---|
Вот этот пример-решение
*(T*)&ptr=x;
17381263
вот это (T*) - приведение к ссылке адреса &ptr |
Не совсем... Тут предполагается что ptr это простая переменная одного типа, а x это простая переменная другого типа.
T x;
S ptr;
ptr = x; // ошибка, несовпадение типов
ptr = (S)x; // нет ошибки синтаксической, но легко увидеть если ошибка логическая (если T нельзя приводить в S).
А теперь мы приходим к кошмару:
&ptr - указатель на тип S
(T*)&ptr - превращаем указатель на S в указатель на T
*(T*)&ptr - сюда уже можно писать.
Ну и как wst сказал в цитируемом посте: "Если цель просто скомпилировать..."
*(T*)&ptr=x; Скомпилируется без проблем, но правомочность такого приведения никто не гарантирует.
По существу это тоже самое что и
ptr = (S)x. Но когда мы знаем что x это число, а ptr это класс - сразу возникнут сомнения в разумности написавшего. А через обилие спецсимволов и конвертаций это можно замаскировать...
По существу это чистое вредительство.