Неоднозначные заявления - PullRequest
8 голосов
/ 04 октября 2010

В чем разница между следующими двумя объявлениями:

 1. int foo(int); 
 2. int foo(int());

Я не уверен, эквивалентны ли оба объявления.Чем (2) отличается от (1)?

1 Ответ

13 голосов
/ 04 октября 2010

int foo(int); - это объявление функции, принимающей целое число в качестве аргумента и возвращающей также целое число

int foo(int()); объявляет функцию, принимающую в качестве аргумента «указатель на функцию, возвращающую int и принимающую {без аргументов [в C ++] и неопределенном количестве аргументов [в C]}» »и возвращающую целое число.

(2) эквивалентно int foo(int (*pf)()) и int foo(int f())

...