Эта программа компилируется и запускается на С++, но не на нескольких разных языках, таких как Java и С#.
#include <iostream>
using namespace std;
void foo2() {
cout << "foo 2.\n";
}
void foo() {
return foo2();
}
int main() {
foo();
return 0;
}
В Java это дает ошибку компилятора, например: "Методы Void не могут вернуть значение". Но так как вызываемый метод является самой void, он не возвращает значение. Я понимаю, что подобная конструкция, вероятно, запрещена для удобства чтения. Есть ли другие возражения?
Изменить: для справки в будущем я нашел здесь аналогичный вопрос return-void-type-in-c-and-c По моему скромному мнению этот вопрос еще не ответил. Ответ "Потому что он так говорит в спецификации, перейдите", не сокращает его, так как кто-то должен был написать спецификацию в первую очередь. Возможно, мне следовало спросить: "Каковы плюсы и минусы, позволяющие возвращать тип пустоты, такой как С++"?