若是在C++里,沒有區別,但是,對于早期C程序的函數而言,聲明的參數列表為空或者void,都是一個意思——參數任意!也就是說,你可以像該函數傳遞任何參數,編譯器不做類型檢查!某些情況下,這是非常危險的。因此,在C++里,編譯器對此的解釋就是:該函數沒有任何參數!如果你像該函數傳遞參數,編譯器會報錯。

舉個例子:
C中:
void fun(void);
調用時,你可以傳遞任何參數;例如:
int a; float f; char c;
fun(a); fun(f); fun(c);
都是對的。因為編譯器不會檢查該函數的參數都是什么。

C++中:你只能這么調用該函數:
fun();
不能有任何參數! 否則報錯。