Изучаю C++. Балуясь с указателями придумал интересный для себя пример. Вероятно, опытных людей он не заинтересует, но я все же рискну.
Единственное полезное применение которое я могу придумать — пугать опасностью подобных приведений.
UPD. Как мне подсказал iley, это в общем-то относится к C.
UPD. Одной строкой:
(спасибо 0lympian за мысль и halyavin за поправку)
typedef int (*pf)(int, int);
char c[] = {85,-119,-27,-117,69,12,3,69,8,93,-61,-112};
pf sum = (pf)c; //reinterpret_cast здесь не работает.
cout << sum(2,3); //Вывод 5.
* This source code was highlighted with Source Code Highlighter.
Теперь sum — функция сложения, являющаяся аналогом этой:int sum(int a, int b){return a+b;}
Единственное полезное применение которое я могу придумать — пугать опасностью подобных приведений.
UPD. Как мне подсказал iley, это в общем-то относится к C.
UPD. Одной строкой:
cout << ((int (*)(int, int))"\x55\x89\xE5\x8B\x45\x0C\x03\x45\x08\x5D\xC3")(2,3)
(спасибо 0lympian за мысль и halyavin за поправку)