Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664

Функция

12.03.2013, 01:14. Показов 2287. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, может ли в С++ функция возвращать себя, как значение ? И как это реализовано в коде.
Я провожу параллели с Pascal и немного запутался...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2013, 01:14
Ответы с готовыми решениями:

Функция
даны действительные числа s,t. Получить:

callback функция
Здраствуйте!!! Занимаюсь разработкой снифера под DVB-карту. Пытаюсь получить MPEG-поток. Проблема заключается в том, что необходимо...

Функция copy
Задача: скопировать файл .exe допустим из C:\Documents and Settings\Пользователь\Рабочий стол\test.exe в D:\ Проблема: пробовал все...

23
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.03.2013, 08:55
Цитата Сообщение от Second Посмотреть сообщение
Подскажите пожалуйста, может ли в С++ функция возвращать себя, как значение ? И как это реализовано в коде.
Я провожу параллели с Pascal и немного запутался...
Рекурсия что ли нужна? Приведите код на паскале, а то параллелей плохо видно без него.
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
12.03.2013, 09:35  [ТС]
Я частично разобрался... и это не рекурсия. Скорее всего уже неактуально, я все сам понял.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
13.03.2013, 10:47
Цитата Сообщение от Second Посмотреть сообщение
Подскажите пожалуйста, может ли в С++ функция возвращать себя, как значение ?
может.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.03.2013, 11:04
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
может.
Dmitriy_M, а не могли бы пояснить, как Вы интерпретировали вопрос тс?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
13.03.2013, 11:27
Цитата Сообщение от Tulosba Посмотреть сообщение
не могли бы пояснить, как Вы интерпретировали вопрос тс?
Может ли в С++ функция возвращать себя, как значение.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.03.2013, 11:50
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Может ли в С++ функция возвращать себя, как значение.
Примерчик бы посмотреть, потому что я всё равно не понимаю о чем речь.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
13.03.2013, 18:30
Цитата Сообщение от Tulosba Посмотреть сообщение
Примерчик бы посмотреть, потому что я всё равно не понимаю о чем речь.
На функцию возвращающий указатель на функцию? Так это тривиально.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.03.2013, 20:14
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
На функцию возвращающий указатель на функцию? Так это тривиально.
Функцию, возвращающую указатель на себя?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
14.03.2013, 08:36
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Так это тривиально.
Пример в студию
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
14.03.2013, 13:33
Цитата Сообщение от Croessmah Посмотреть сообщение
Пример в студию
+, на тип возвращаемого значения бы взглянуть)
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.03.2013, 17:54
Цитата Сообщение от gray_fox Посмотреть сообщение
+, на тип возвращаемого значения бы взглянуть)
void* конечно же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
typedef void* (*t_functor)();
 
void* foo()
{
    std::cout<<"abc"<<std::endl;
    return reinterpret_cast<void*>(&foo);   
}
 
int main()
{
    reinterpret_cast<t_functor>(foo())();   
    return 0;   
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.03.2013, 18:02
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
void* конечно же.
Не типобезопасно. К тому же
warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
14.03.2013, 18:14
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
void* конечно же.
тогда вы возвращаете указатель на что-то, а не на функцию
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.03.2013, 21:58
Цитата Сообщение от Tulosba Посмотреть сообщение
Не типобезопасно.
Что такое тип? А жесткая типизация это хорошо или плохо?
Цитата Сообщение от Tulosba Посмотреть сообщение
warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
Вопрос на засыпку, почему компилятор проглотил?)
Цитата Сообщение от Croessmah Посмотреть сообщение
тогда вы возвращаете указатель на что-то, а не на функцию
С точки зрения ТЯП да, а в остальном вопрос философский. В архитектуре фон Немана нет разделения памяти на данные и команды, как нужно так и интерпретирую память)
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.03.2013, 12:24
Dmitriy_M,
Converting a function pointer to an object pointer type or vice versa is conditionally-supported. The meaning
of such a conversion is implementation-defined, except that if an implementation supports conversions in
both directions, converting a prvalue of one type to the other type and back, possibly with different cv-
qualification, shall yield the original pointer value.
Привет, unspecified behaviour и некроссплатформенный код.
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
15.03.2013, 14:36  [ТС]
ого, тема живет.

У меня возник вопрос, когда я столкнулся с необходимостью понять принцип действия функции в C++.
Я описал функцию int с двумя формальными параметрами и вызвал её.
там сложил эти параметры и присвоил совершенно другой переменной.

но !! каково же было мое удивление, когда значение функции совпало с суммой.
Я до сих пор не могу понять, почему это произошло и воспринимаю это как данность.

Я изучал и работал в других языках и там гораздо жесче синтаксис, что мне ближе...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.03.2013, 14:50
Цитата Сообщение от Second Посмотреть сообщение
Я описал функцию int с двумя формальными параметрами и вызвал её.
там сложил эти параметры и присвоил совершенно другой переменной.
но !! каково же было мое удивление, когда значение функции совпало с суммой.
Приведите код уже наконец, а то тут ещё больше полемики разовьётся
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
15.03.2013, 15:24  [ТС]
приведу )) Вечером буду дома и выложу. Я думал, что с таким тривиальным вопросом буду освистан :F
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
15.03.2013, 21:26
ForEveR, код компилятора-зависим и архитектурно зависим, но некроссплатформенно.
А если поддерживается, то в соответствие с тем что ты привел, поведение определено:
shall yield the original pointer value.
Указатель на void* должен иметь размер достаточный, что бы содержать указатель на любой объект в частности на классы с наследованием, а такие указатели обычно имеют больший размер нежели указатели на простые типы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2013, 21:26
Помогаю со студенческими работами здесь

Функция kbhit
Это опять я:) Не работает kbhit Нужно, чтобы во время рисования кривой Гильберта большого порядка пользователь имел возможность...

дружественная функция...
есть вот такой код: #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; class plane { float...

Функция wait
Доброго времени суток. Передо мной встал вопрос на который я не могу дать ответ, может ктонибудь знает. Вопрос: определить, что должно...

Функция DeviceIoControl
Мне нужно полное описание функции DeviceIoControl или подскажите книгу, где можно найти ее описание

Функция rand
Решить задачу с использованием библиотечной функции rand,заголовочный файл stdlib.h Случайные числа в диапазоне от -32768 до 32768 можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru