Открыть список
Как стать автором
Обновить

Функция без явного определения

C++
Изучаю C++. Балуясь с указателями придумал интересный для себя пример. Вероятно, опытных людей он не заинтересует, но я все же рискну.
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 за поправку)
Теги:c++
Хабы: C++
Всего голосов 55: ↑39 и ↓16 +23
Просмотры1.2K

Комментарии 93

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Похожие публикации

Senior C++ Developer
от 2 500 до 3 000 $Alex Staff AgencyМожно удаленно
Senior C++ Engineer
до 230 000 ₽ItivitiСанкт-Петербург
C++ Toolset Developer [возможен Remote]
от 2 000 $Awem GamesМожно удаленно
Разработчик C++ встраиваемые системы
от 180 000 до 250 000 ₽1 CEOСанкт-ПетербургМожно удаленно
Разработчик C++/Qt Middle
от 180 000 до 250 000 ₽1 CEOМожно удаленно

Лучшие публикации за сутки