Зачем добавлять void в список параметров метода

Я видел методы со следующей подписью:

void foo (void);

Они не принимают никаких аргументов, однако мне интересно, полезно ли это, или нет. Есть ли причина, по которой вы хотели бы это сделать?

Ответ 1

В стандарте С++ 03 говорится (основное внимание):

8.3.5.2

Параметр-объявление-предложение определяет аргументы, которые могут быть и их обработку, когда вызывается функция. [Заметка: Параметр-объявление-предложение используется для преобразования аргументов указанный в вызове функции; см. 5.2.2. ] Если Параметр-объявление-предложение пуст, функция не принимает Аргументы.

Это означает, что если вы разговариваете с компилятором, это просто вопрос вкуса.

Если вы пишете код, который будет читаться другими, то способ выполнения С++ - это

void foo();

Другая форма остается в силе только по соображениям совместимости с C, где между двумя сигнатурами существует разница.

Ответ 2

Это удержание из более старых версий C, где foo() означает "функция с неизвестным числом параметров" и foo(void) означает "функция с нулевыми параметрами". В С++, foo() и foo(void) означают "функцию с нулевыми параметрами", но некоторые предпочитают вторую форму, потому что она более явная.

Ответ 3

Это наследие старых версий C для функций без аргументов

Ответ 4

В коде на С++ нет никакой причины использовать void таким образом. Что еще более не является идиоматическим способом объявить параметрические функции.