我现在正在重构/整理C++程序中使用的一些旧C代码,并定期查看函数,如:
int f(void)
我倾向于这样写:
int f()
是否有任何理由不在整个代码库中用()替换(void)以提高一致性,或者两者之间是否存在我不知道的细微差别?
更具体地说,如果C++中的虚拟成员函数被描述为:
virtual int f(void)
派生类包括一个成员函数:
int f()
这是有效的覆盖吗?此外,基于几乎相同的签名,我可能会遇到任何链接器问题吗?
我现在正在重构/整理C++程序中使用的一些旧C代码,并定期查看函数,如:
int f(void)
我倾向于这样写:
int f()
是否有任何理由不在整个代码库中用()替换(void)以提高一致性,或者两者之间是否存在我不知道的细微差别?
更具体地说,如果C++中的虚拟成员函数被描述为:
virtual int f(void)
派生类包括一个成员函数:
int f()
这是有效的覆盖吗?此外,基于几乎相同的签名,我可能会遇到任何链接器问题吗?
在C语言中,声明int f(void)
表示返回int的函数,该函数不带任何参数.声明int f()
表示返回int的函数,该函数接受任意数量的参数.因此,如果你有一个在C中不带参数的函数,那么前者就是正确的原型.
在C++中,我相信int f(void)
是不推荐的,int f()
是首选的,因为它具体地表示不带参数的函数.