Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Непонятен синтаксис шаблонов из кода boost для вычисления факториала - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написание програмы по полёту ракеты http://www.cyberforum.ru/cpp-beginners/thread1798523.html
Очень надеюсь, что найдётся человек, которому не лень помочь. Просто я сильно провтыкался с дэдлайном в ВУЗе и сейчас в форсированом режиме делаю курсовую, так-как бедный студент приобрести не могу,...
C++ Вектор выходит за диапазон Здравствуйте. :) Как сделать так чтобы вектор не выходил за диапазон? #include <iostream> #include <vector> using namespace std; int main() { int k; http://www.cyberforum.ru/cpp-beginners/thread1798512.html
C++ Com port и С++
Хочу отослать данные по ком порту на контроллер.Вот только беда,не отсылается всё сообщение,а только один символ.Как это исправить? LPCTSTR sPortName = L"COM4"; CString ed=L"asdasd"; CString...
Сформировать массив неповторяющихся элементов исходного массива C++
Сформировать массив из неповторяющихся элементов исходного массива. Например : Из массива A = {2,5,2,6,8,5,1,9,4,3 } нужно получить массив B ={6,8,1,9,4,3,0,0,0,0}. Или B={6,8,1,9,4,3) что даже...
C++ Функция strlen перед вызовом моей функции портит строку в конфигурации Release MS Visual C++ 2013 http://www.cyberforum.ru/cpp-beginners/thread1798377.html
Написал функцию RemoveChars, которая убирает символы перевода строки в строке. Если в конфигурации проекта Visual C++ в Microsoft Visual Studio 2013 установлено Debug, проблем нет. Если перед вызовом...
C++ Сгенерировать заголовочный файл для .lib (созданной в Maple) Доброго, форумчане! у меня нет опыта в кодинге на с++ и это мой первый пост) хочется подключить lib файл (созданный в maple) к .net проекту. Основываюсь на этой статье для начало реализовал на... подробнее

Показать сообщение отдельно
DrOffset
7155 / 4296 / 972
Регистрация: 30.01.2014
Сообщений: 7,101
26.08.2016, 09:01
Цитата Сообщение от cyberk20 Посмотреть сообщение
Скажите в чем разница между указателем на функцию и просто типом функция?
Вот допустим есть такая функция
C++
1
void test(int x) {}
Выражение test имеет тип void(int), выражение &test имеет тип void(*)(int). Логика видна?
Тип функции - абстракция. Программист не может создать объект типа "функция" (наряду с ссылками, и void). Хотя сами определения функций можно условно считать такими объектами. Поэтому в выражениях, где требуется объект, тип функции продвигается до указателя. Следовательно, выражения void (*p)(int) = &test; и void (*p)(int) = test; эквивалентны. В языке С++ есть еще один тип, который ведет себя похожим образом - это массив, его объекты можно создавать, но их нельзя непосредственно копировать, в этом случае они также продвигаются до указателя.
Таким образом тип функция может быть применен только для выражений на этапе компиляции, в частности для специализаций и шаблонной дедукции. Можно конечно для этих же целей использовать указатель на функцию, но тип функции позволит получить более общую нотацию для функций-членов и свободных функций (как, например, это сделано в std::function).
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru