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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Как объявить функцию без прототипа - C++

01.09.2012, 20:15. Просмотров 1683. Ответов 24
Метки нет (Все метки)

Во всех учебниках пишут, что каждая функция должна иметь прототип. ВОт стало интересно, можно ли объявить функцию, которая не имеет прототип. Если да, то как? Покажите.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2012, 20:15     Как объявить функцию без прототипа
Посмотрите здесь:

C++ [C/C++]Не могу объявить static функцию в header файле.
Забыл, как объявить функцию с тем же названием? C++
необходимо объявить массив указателей на функцию C++
C++ Из заданной строки, распечатать все слова без повторений (как добавить функцию strcmp)
C++ Объявить функцию в STRUCT {} С++
как мне в функции main() объявить функцию Do (), подскажите пожалуйста, на таком глупом застрял C++
Как объявить функцию, которая имеет место быть только в некоторых дочерних классах, а базовый класс абстрактный? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,614
01.09.2012, 21:28     Как объявить функцию без прототипа #21
Цитата Сообщение от bgm313 Посмотреть сообщение
auto func = [](int x) -> int { return x+5; };

Если можно пояснить что это за конструкция или сказать что почитать?
Стандарт почитать С++11. В книжках пока ничего такого не описано.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
01.09.2012, 21:29     Как объявить функцию без прототипа #22
ValeryLaptev, Описано. The C++ Standard Library Second Edition Nicolai M. Josuttis
Почему вы избегаете использовать возможности С++11 ?
Почему вы избегаете использовать возможности С++11 ?
PSIAlt
 Аватар для PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
01.09.2012, 21:40     Как объявить функцию без прототипа #23
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Я имею в виду вывести. Чтобы вообще не писать кусок (int x) -> int, в котором прописаны типы аргументов и возвращаемого значения. Исключительно по телу функции.
Ну тогда это был бы не строго типизированный язык.

Цитата Сообщение от ForEveR Посмотреть сообщение
Неверно. func не будет тем, что вы сказали. closure это совершенно отдельный тип, не указатель на функцию.
okay
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
01.09.2012, 21:56     Как объявить функцию без прототипа #24
Цитата Сообщение от PSIAlt Посмотреть сообщение
Ну тогда это был бы не строго типизированный язык.
А что не так со строгостью? Выводилка типов не должна сказать, что тип этой функции будет X → Y, где X не поддерживает умножение на число два.


Цитата Сообщение от ForEveR Посмотреть сообщение
Неверно. func не будет тем, что вы сказали. closure это совершенно отдельный тип, не указатель на функцию.
Да вроде
такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
typedef int (*func_type)(int);
 
func_type getFunc(int y)
{
  return [](int x) -> int { return 2*x; };
}
 
int main()
{
  std::cout << getFunc()(10);
}
прокатывает. Так что вполне вероятно, что лямбды — не замыкания (которые с [], а не [=] или [&]) можно по крайней мере приводить к указателям на функции. Курю стандарт пока.

Таки да. Лямбды-комбинаторы можно приводить к указателям, 5.1.2/6:
The closure type for a lambda-expression with no lambda-capture has a public non-virtual non-explicit const conversion function to pointer to function having the same parameter and return types as the closure type’s function call operator. The value returned by this conversion function shall be the address of a function that, when invoked, has the same effect as invoking the closure type’s function call operator.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2012, 23:18     Как объявить функцию без прототипа
Еще ссылки по теме:

Макрос прототипа функции C++
C++ Можно ли объявить дружественную функцию как шаблон?
Можно ли объявить два указателя на одну функцию? C++
C++ Вычислить гипотенузы используя функцию, объявить прототип
C++ Как объявить friend функцию класса

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
01.09.2012, 23:18     Как объявить функцию без прототипа #25
~OhMyGodSoLong~, Ну я и не спорил, что можно. Я спорил с тем, что auto выведет именно указатель на функцию.
Yandex
Объявления
01.09.2012, 23:18     Как объявить функцию без прототипа
Ответ Создать тему
Опции темы

Текущее время: 18:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru