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

Функция

12.03.2013, 01:14. Показов 2259. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru